Python基础教程(补中秋的文章)
千千万万之状容兮,不可得而状也
小马
身份运算符
身份运算符用于比较两个对象是否为同一个对象。身份运算符共有两个:is和is not。
Python身份运算符的使用语法如下:
obj1 is [not] obj2
身份运算符是用于比较两个对象是否为同一个对象的运算符,而比较运算符中的“==”则是用于比较两个对象的值是否相等的运算符,不要将两者混淆。
为了理解身份运算的原理,首先介绍Python变量的3个属性:name、id和value。可将name理解为变量名,id可理解为内存地址,而value就是变量的值。身份运算符is或is not是通过将变量的id属性作为判断依据来进行判断的,如果两个变量的id相同,那么返回True,说明是同一个对象;否则返回False,说明不是同一个对象。
位运算符
位运算就是把对象转换为二进制后,按照对应的二进制位逐一进行运算的一种运算形式。需要提醒的是,在计算机系统中,所有数值一律以补码形式存储。
关于什么是补码的问题,请读者自行查阅资料加以消化。为什么要理解补码?因为它与数值对象的二进制转换关系密切。
位运算符是以二进制形式参与运算的一种运算符。如果是双目运算符,则参与运算的对象是二进制的两个位;如果是单目运算符,则参与运算的对象是二进制的一个位。所谓双目运算符,就是必须有两个对象参与运算的运算符。
优先级与结合性
Python运算符的优先级用于描述计算机在计算表达式时执行运算的先后顺序。优先级规则是,先执行具有较高优先级的运算,然后执行具有较低优先级的运算。例如,数学中常说的先执行乘、除运算,再执行加、减运算,就是优先级的一种体现。
除传统意义上的优先级外,Python在运算过程中还使用一种新的优先级,也就是运算方向,借用C语言的概念,权且称之为“结合性”。
Python的结合性也即运算的方向,就是当两个运算符的优先级相同时,如何执行运算操作的问题。大多数Python运算符的结合性均为“左结合性”:当运算符的优先级相同时,按照从左向右的顺序计算表达式的结果。例如,2+3+4被计算成(2+3)+4。唯一具有右结合性的运算符是赋值运算符“=”。优先级数相同的运算符具有相同的优先级。
help(input)
上述文档说明,input()函数从标准输入设备读入数据,自动清除换行后将输入转换为字符串并以函数值形式返回。它最多只有一个参数prompt,通常是字符串类型的变量或常量,用于作为输入时的提示信息;如果不带参数,则默认为空值(None)。
以下通过两个例子说明input()函数的用法。
举例1:
>>> x=input()
123
>>> x
'123'
>>>
举例1演示了无参数调用input()函数的情形。它自动接收从键盘输入的“123”,将其转换为字符串后返回并赋给变量x。
举例2:
>>>x=input("请输入数据:")
请输入数据:123
>>>x
'123'
>>>
举例2演示了带参数调用input()函数的情形。函数参数为字符串常量“请输入数据:”,该信息被原样输出在屏幕上,它实际上是作为输入时的提示,以提高人机友好性。
举例3:
>>> x=input(123)
12356 #123是input()函数的参数,56是输入信息
>>> x
'56'
>>>
这个例子表明,input()函数的参数可为字符串以外的其他类型,但不被推荐。因为从帮助说明中可以看出,该参数被用作prompt,而prompt即提示的意思,所以使用字符串更加符合常理。
数据类型之间的转换
由于input()函数接收的信息均以字符串形式返回,所以有必要进行各种数据类型之间的转换,以满足不同的应用需要。为了实现数据类型之间的转换,可直接借助Python内置函数。下面举例说明。
举例4:str()。
内置函数str(x)用于将对象x转换为字符串。
>>> x=123
>>> y=str(x)
>>> y
'123'
>>>
举例5:chr()。
内置函数chr(x)用于将一个整数转换为一个字符,也就是将该整数作为ASCII码,转换成其对应的字符。
>>>x=65 #字符A的ASCII码
>>> y=chr(x)
>>> y
'A'
>>>
举例6:hex()。
内置函数hex(x)用于将一个整数转换为一个十六进制字符串。
>>> x=123
>>> y=hex(x)#将十进制整数123转换为十六进制字符串“0x7b”。注意,是字符串,而不是数值
>>> y
'0x7b'
>>>
下面将重点引入并讨论将字符串转换为数值的内置函数——eval()函数。该函数通常与input()函数配合使用,如影随形,所以务必掌握它。
eval(str):计算字符串str中的表达式,并将计算结果以数值形式返回。通俗地说,就是将字符串转换为相应的数值表达式并求出它的值,将该值作为函数值返回。
举3个例子说明eval()函数的用法。matlab里面也有,我以后写~
举例7:eval()函数的用法1。
>>> x="123"
>>> y=eval(x)
>>> y
123
举例8:eval()函数的用法2。
>>> x="2+3"
>>> y=eval(x)
>>> y
5
举例9:eval()函数的用法3。
>>> x="123abc"
>>> y=eval(x)
Traceback (most recent call last):
File "<pyshell#51>", line 1, in <module>
y=eval(x)
File "<string>", line 1
123abc
^
SyntaxError: unexpected EOF while parsing
>>>
举例9说明,参数x为字符串“123abc”,它不被接受,因为在Python中,不可能存在类似于123abc的表达式,也就是说,表达式是无效的、非法的。所谓表达式,是由变量、常量和运算符组成的有确定值的式子。
print()函数的功能
在绝大多数情况下,程序需要通过输出语句将结果或信息输出至屏幕。Python无专门的输出语句,它是通过调用输出函数来实现输出的,而内置函数print()是Python唯一的格式化输出函数。如果要获取print()函数的详细信息,则可以使用help(print)命令。
>>> help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object(stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
>>>
从上述说明文档中可以得到以下几点信息:
· 它的参数个数是不定的,也就是说,它可以输出多个参数,用逗号分隔即可。
· 输出时,参数间默认使用一个空格隔开。
· 信息被输出到file。file默认为标准输出设备,通常为屏幕。当所有参数被输出后,自动换行。
· flush参数决定是否清除缓存,默认值为False,也就是说,不清除缓存。
print()函数的3种使用形式
调用内置函数print()的形式通常有3种:非格式化输出、使用%的格式化输出和使用format()的格式化输出。
1.形式一:非格式化输出
非格式化输出形式用于直接输出任何类型的常量和变量。
举例10:
>>> print(123)
123
>>> print("海阔天空")
海阔天空
>>>
举例11:
>>> x=123
>>>print(x) #整型变量
123
>>> s="hello! "
>>>print(s) #字符串变量
hello!
>>> l=[1,3,5,7,9,11]
>>>print(l) #列表变量
[1, 3, 5, 7, 9, 11]
>>> t=(1,3,5,7,9,11)
>>>print(t) #元组变量
(1, 3, 5, 7, 9, 11)
>>> ss={12, "shaoxing",13, "wenzhou"}
>>>print(ss) #集合变量
{'shaoxing', 12, 13, 'wenzhou'}
>>> d={"name":"zhangsan", "yearsold":23, "program":"EE"}
>>>print(d) #字典变量
{'name': 'zhangsan', 'yearsold': 23, 'program': 'EE'}
>>>
2.形式二:格式化输出——使用%
该形式类似于C语言中的printf()函数,可用于向标准输出设备以指定的格式输出信息。在Python中,可采用以下两种方法实现格式化输出。
· 一般格式化法:使用格式规定符%以实现格式控制。格式规定符及其用法基本上与C语言中的相同,因此常被称为类C法。
· format()函数法:通过内置函数format()控制输出的格式。
形式二指的就是一般格式化法。在一般格式化法中,常用的格式规定符有以下3个。
(1)%s。它是字符串格式规定符,用于规定以字符串形式输出对象。例如,%10s表示字符串的宽度为10个字符,如不足则以空格补充,如超过则按实输出。
(2)%d。它是整型数据格式规定符,用于规定以整数形式输出对象。例如,%5d表示整型对象的输出宽度为5个字符,如不足则以空格补充,如超过则按实输出。(3)%f。它是浮点型数据格式规定符,用于规定以浮点数形式输出对象。例如,%6.2f表示浮点型对象的宽度为6个字符(包括小数点“.”),小数点占2位,如不足则以空格补充。
上述格式规定符均为右对齐。如果要改为左对齐,则在“%”和“格式符字母”之间加一个“-”。例如,%-d表示在输出整型对象时采用左对齐格式。
举例12:
>>> for i in range(5):
print("%5d"%(i))
0
1
2
3
4
>>>
上述程序的输出默认为右对齐,下列程序的输出则为左对齐。
举例13:
>>> for i in range(5):
print("%-5d"%i)
0
1
2
3
4
>>> x=1234
>>> print("%d"%x)
1234
>>> print("%8d"%x)
1234
>>> print("%-8d"%x)
1234
>>>
有了上述两个举例,读者应该基本理解了一般格式化法的使用要点。现将一般格式化法的用法归纳如下:
print("格式字符串"%(输出对象表))
其中,
· 格式字符串:由常规字符与格式规定符组成,常规字符被原样输出,格式规定符则由对应的输出对象代替。
· 输出对象表:由一个或多个对象组成的表列。如果只有一个对象,则可省略括号;如果有多个对象,则常用“()”将多个对象包含,对象之间用“, ”隔开。注意,输出对象表中对象的个数、顺序必须与格式字符串中的格式规定符“一一对应”。
格式化输出——使用format()
该形式通过调用内置函数format()控制print()函数的输出格式。
从Python 2.6开始,推出了一种威力强大的格式化字符串方式,如下:
str.format()
那么,它跟前述使用“%”的格式化字符串方式相比,有哪些优势?
1)关于format()的说明
关于format()的使用,Python有详细的说明文档,可通过以下两条命令去获取:
>>> help(format)
>>> help('FORMATTING')
使用“{}”和“:”代替“%”,在format()函数的配合下实现对字符串更加灵活多变的格式化控制,这是形式三最关键的部分。强烈建议使用形式三,因为它可以对所有数据类型进行格式化,相较于“%”方式,功能更加强大。
你学费没有????????????