编程语言常识

2019-06-20 17:48:51 浏览数 (1)

Python第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快

任何一种编程语言都有自己的一套语法,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return

安装好Python,在命令行输入python,如果错误配置path环境变量,将path.exe的地址加入环境变量

退出命令行:exit()

命令行中,在hello.py文件目录下可直接执行python hello.py文件

Python程序是大小写敏感的,如果写错了大小写,程序会报错

Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进

如果想定义一个什么事也不做的空函数,可以用pass语句:

def nop():

pass

数据类型检查可以用内置函数isinstance()实现:

def my_abs(x):

if not isinstance(x, (int, float)):

raise TypeError(‘bad operand type’)

if x >= 0:

return x

else:

return -x

from abstest import my_abs 从abstest.py文件中导入my_abs函数

多个变量可以同时接收一个tuple,按位置赋给对应的值,返回一个tuple可以省略括号,所以,Python的函数返回多值其实就是返回一个tuple

定义函数时,需要确定函数名和参数个数;

如果有必要,可以先对参数的数据类型做检查;

函数体内部可以用return随时返回函数结果;

函数执行完毕也没有return语句时,自动return None。

函数可以同时返回多个值,但其实就是一个tuple

1.静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言

2.在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,所以Python是动态语言

3.变量在计算机内存中的表示:

a = ‘ABC’

b = a

a = ‘XYZ’

print b

1.执行a = ‘ABC’,解释器创建了字符串’ABC’和变量a,并把a指向’ABC’:

2.执行b = a,解释器创建了变量b,并把b指向a指向的字符串’ABC’:

3.执行a = ‘XYZ’,解释器创建了字符串’XYZ’,并把a的指向改为’XYZ’,但b并没有更改:

4.所以,最后打印变量b的结果自然是’ABC’了。

4.所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

5. >>> 10 / 3

3

你没有看错,整数除法永远是整数,即使除不尽。要做精确的除法,只需把其中一个整数换成浮点数做除法就可以:

10.0 / 3

3.3333333333333335

因为整数除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

10 % 3

1

无论整数做除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

6.Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来

7.Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

8.本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间

9.字符 ASCII Unicode UTF-8

A 01000001 00000000 01000001 01000001

中 x 01001110 00101101 11100100 10111000 10101101

10.在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件

11.因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’ABC’在Python内部都是ASCII编码的。Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换:

ord(‘A’)

65

chr(65)

‘A’

12.字符串’xxx’虽然是ASCII编码,但也可以看成是UTF-8编码,而u’xxx’则只能是Unicode编码。

把u’xxx’转换为UTF-8编码的’xxx’用encode(‘utf-8’)方法:

u’ABC’.encode(‘utf-8’)

‘ABC’

u’中文’.encode(‘utf-8’)

‘xe4xb8xadxe6x96x87’

13.英文字符转换后表示的UTF-8的值和Unicode值相等(但占用的存储空间不同),而中文字符转换后1个Unicode字符将变为3个UTF-8字符,你看到的xe4就是其中一个字节,因为它的值是228,没有对应的字母可以显示,所以以十六进制显示字节的数值。len()函数可以返回字符串的长度:

len(u’ABC’)

3

len(‘ABC’)

3

len(u’中文’)

2

len(’xe4xb8xadxe6x96x87’)

6

14.把UTF-8编码表示的字符串’xxx’转换为Unicode字符串u’xxx’用decode(‘utf-8’)方法:

‘abc’.decode(‘utf-8’)

u’abc’

‘xe4xb8xadxe6x96x87’.decode(‘utf-8’)

u’u4e2du6587’

print ‘xe4xb8xadxe6x96x87’.decode(‘utf-8’)

中文

15.由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python

-- coding: utf-8 --

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

如果你使用Notepad 进行编辑,除了要加上# -- coding: utf-8 --外,中文字符串必须是Unicode字符串:

16.在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

‘Hello, %s’ % ‘world’

‘Hello, world’

‘Hi, %s, you have $%d.’ % (‘Michael’, 1000000)

‘Hi, Michael, you have $1000000.’

17.常见的占位符有:

%d 整数

%f 浮点数

%s 字符串

%x 十六进制整数

其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

‘--d’ % (3, 1)

’ 3-01’

‘%.2f’ % 3.1415926

‘3.14’

如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:

‘Age: %s. Gender: %s’ % (25, True)

‘Age: 25. Gender: True’

18.对于Unicode字符串,用法完全一样,但最好确保替换的字符串也是Unicode字符串:

u’Hi, %s’ % u’Michael’

u’Hi, Michael’

有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:

‘growth rate: %d %%’ % 7

‘growth rate: 7 %’

19.在Python 3.x版本中,把’xxx’和u’xxx’统一成Unicode编码,即写不写前缀u都是一样的,而以字节形式表示的字符串则必须加上b前缀:b’xxx’。

格式化字符串的时候,可以用Python的交互式命令行测试,方便快捷

20.break是提前使整个循环程序退出,退出的所有循环体内容

continue只是本次循环程序退出,继续执行下一次循环,跳出的是本次循环的所有循环体内容

这两个语句通常都必须配合if语句使用。if后面的循环体内容不执行

注意:大多数循环并不需要用到break和continue语句,通过改写循环条件或者修改循环逻辑,去掉break和continue语句。

21.Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度

d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}

d[‘Michael’]

95

一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值覆盖掉

避免key不存在的错误,有两种办法:

一是通过in判断key是否存在

‘Thomas’ in d

False

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

d.get(‘Thomas’)

d.get(‘Thomas’, -1)

-1

22.和list比较,dict有以下几个特点:

查找和插入的速度极快,不会随着key的增加而变慢;

需要占用大量的内存,内存浪费多。

而list相反:

查找和插入的时间随着元素的增加而增加;

占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法

23.需要牢记的第一条就是dict的key必须是不可变对象

这个通过key计算位置的算法称为哈希算法(Hash)。

在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

24.set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合

重复元素在set中自动被过滤:

s = set([1, 1, 2, 2, 3, 3])

s

{1, 2, 3}

通过add()可以重复添加,但不会有效果

dict可以用在需要高速查找的很多地方

25.set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

s1 = set([1, 2, 3])

s2 = set([2, 3, 4])

s1 & s2

{2, 3}

s1 | s2

{1, 2, 3, 4}

26.对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的

a = ‘abc’

b = a.replace(‘a’, ‘A’)

b

‘Abc’

a

‘abc’

可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如对list执行排序或者删除、增加等操作

27.使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串

--------------------- 

作者:lzyzlx1914 

来源:CSDN 

原文:https://blog.csdn.net/lzyzlx1914/article/details/90729187 

版权声明:本文为博主原创文章,转载请附上博文链接!

0 人点赞