Python笔记
1.输出当前文件目录
>>> import os >>> os.getcwd() 输出:'C:\\Users\\Administrator'
3.内置的dir函数可以用它来获得模块内部的可用的变量名的字符串列表,其中包含了对象的所有属性。方法是函数属性,也会返回。
>>> dir(math) //返回math模块的所有属性,一些以双下划线开头并结尾的变量名通常是Python预定义的内置变量名,没有下划线的属性是字符串对象能够调用的方法。 输出:['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'd egrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
4.在交互会话中,可以通过简单的import导入我们所创建的.py文件(即模块),但是在第一次导入运行之后,相同.py文件(即相同模块)的导入都不会再工作,甚至改变并保存了模块的源代码文件也不行。这是有意设计的结果。导入是一个开销很大的操作,以至于每个文件、每个程序运行不能够重复多余一次。
>>> import s1 输出:I am Edwin >>> import s1 \\再次导入,无输出结果 >>> import s1 \\再次导入,无输出结果
>>> import s1 \\再次导入,无输出结果
5.Python不需要提前声明,但是在在使用变量的值之前必须对其赋值。Python中没有类型声明,运行的表达式的语法决定了创建和使用的对象的类型。Python是动态类型的(它自动地跟踪对象的类型而不是要求声明代码),但是它也是强类型语言(你只能对一个对象进行合适该类型的有效的操作)。
7.加号(“+”)对于不同的对象有不同的意义:对于数字为加法,对于字符串为合并。
8.在核心类型中(数字、字符串、集合、元组、列表、字典、文件),数字、字符串、不可变集合和元组是不可变的;列表、字典和可变集合
是可变的。
9.列表,元组是有序的,集合、字典是无序的。
10.列表,字符串,元组是序列(它们共同拥有一般的序列操作,例如索引,合并以及分片,但又各自有各自自己的类型特定的方法调用),字典不是序列,是一种映射。集合不是映射也不是序列,它是唯一的、不可变的对象的无序集合(唯一的是指一个项在集合中只能出现一次)。
11.列表、集合和字典都可以用解析来创建。
>>> [x for x in "edwin"] //用解析来创建列表 输出:['e', 'd', 'w', 'i', 'n'] >>> {x for x in "edwin"} //用解析来创建集合 输出:{'n', 'e', 'i', 'w', 'd'} >>> {x:ord(x) for x in "edwin"} {'e': 101, 'd': 100, 'w': 119, 'i': 105, 'n': 110} >>> {x:ord(x) for x in "edwin"} //用解析来创建字典 输出:{'e': 101, 'd': 100, 'w': 119, 'i': 105, 'n': 110}
12.在Python中,一旦一个对象最后一次引用被移除,空间将会立即回收。
13.在Python3中,十六进制数、八进制数和二进制常量:
十六进制以0x或0X开头,后面接十六进制的数字0~9和A~F,如0x9ff;
八进制以数字0o或0O开头(0和小写或大写的字母“o”),后面接数字0~7构成的字符串,如0o177;
二进制以0b或0B开头,后面接二进制数字(0~1),如0b101010.
>>> hex(10) //将十进制整数"10"转换为16进制的字符串 输出:'0xa' >>> oct(10) //将十进制整数"10"转换为8进制的字符串 输出:'0o12' >>> bin(10) //将十进制整数"10"转换为2进制的字符串 输出:'0b1010' >>> int("64"),int("100",8),int("40",16),int("1000000",2) //int函数将一个数字的字符串变换为一个整数,并可以通过定义的第二个参数来确定变换后的数字的进制。
输出:(64, 64, 64, 64)
使用字符串格式化方法调用和表达式将整数转换数字的进制的字符串:
>>> "{0:o},{1:x},{2:b}".format(64,64,64) //字符串格式化方法 输出:'100,40,1000000' >>> "%o,%x,%X"%(64,255,255) //字符串格式化表达式
输出:'100,ff,FF' >>> "%b"%255 \\此种字符串格式化方法不能转为二进制 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: unsupported format character 'b' (0x62) at index 1
14.表达式中可以混合操作符以外,也能够混合数字类型。在混合类型的表达式中,Python首先将被操作的对象转换为其中最复杂的操作对象的类型,然后再对相同类型的操作对象进行数字运算。
数字类型复杂度:整数<浮点数<复数。
>>> 40+3.14 //整数先升级转为浮点数的值,之后通过浮点数运算得到浮点数的结果 输出:43.14
特别的,在Python3中,非数字混合类型的比较是不允许的,并且会引发异常。
>>> 40+"abc" 输出:Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
15.//操作符通常叫做截断除法,但是更准确的说法是floor除法,它把结果向下截断到它的下层,即真正结果之下的最近的整数。其直接效果就是向下舍入,并不是严格地截断。
>>> import math >>> math.floor(2.5) //floor除法,向下舍入,取2 2 >>> math.floor(-2.5) //floor除法,向下舍入,取-3 -3 >>> math.trunc(2.5) //将结果直接截断,取2 2 >>> math.trunc(-2.5) //将结果直接截断,取-2 -2 >>> 5//2 //如果是正数,floor除法和截断除法结果都一样 2 >>> 5//-2 //如果是负数,其结果就是floor除法的结果,所以严格意义上,//操作符是floor除法。 -3
16.整数的bit_length方法允许我们查询以二进制表示一个数字的值所需的位数。
>>> (255).bit_length() 输出:8 >>> len(bin(255))-2 //通过bin和内置函数len得到二进制字符串的长度再减去2,也能得到同样的效果,但是方法效率较低 输出:8
17.列表和字典不能嵌入到集合中,但元组可以嵌入。
>>> s={1,2,3}
>>> s.add([4,5,6]) \\列表不能嵌入
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> s.add({"a":1}) \\字典不能嵌入
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> s.add((4,5,6)) \\元组能嵌入
>>> s
{1, 2, 3, (4, 5, 6)}
17.字符串转义问题
>>> myfile = open("C:\Users\Administrator\Desktop\new.txt","w") //因为\n是转义字符,所以会报错 File "<stdin>", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape >>> myfile = open(r"C:\Users\Administrator\Desktop\new.txt","w") //raw字符串关闭转义,在字符串的第一引号的前面加上字母r(大写或者小写),它将会关闭转义机制 >>> myfile = open("C:\\Users\\Administrator\\Desktop\\new.txt","w") //或者可以把反斜杠改为双斜杆,保留反斜杠
>>> myfile = open("C:/Users/Administrator/Desktop/new.txt","w") //或者使用斜杠“/”,一般都使用这种方法
18.字符串代码转换
>>> ord("s") //将字符转换为ASCII码 输出:115 >>> chr(115) //将ASCII码转换为字符 输出:'s'
19.序列支持索引,切片,合并操作,字典不适合用切片和合并,因为他不是序列
20.相等测试
“==”操作符:测试两个被引用的对象是否有相同的值
“is操作符”:检查对象的同一性,即测试两者的内存空间是否相同,是一种更严格形式的相等测试
>>> L = [1,2,3] >>> M = [1,2,3] >>> L == M #L和M的值相等 True >>> L is M #L和M是不同对象,即内存空间不同 False
21.dir函数
内置的dir(X)函数会返回附件在任何对象上的所有属性的列表。
>>> dir(list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getatt ribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__' , '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__set item__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
22.文档字符串:__doc__
>>> print(list.__doc__) list() -> new empty list list(iterable) -> new list initialized from iterable's items
23.help函数
>>> help(list) Help on list object: class list(object) | list() -> new empty list | list(iterable) -> new list initialized from iterable's items | | Methods defined here: | | __add__(self, value, /) | Return self+value. | | __contains__(self, key, /) | Return key in self. | | __delitem__(self, key, /) | Delete self[key]. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(...) | x.__getitem__(y) <==> x[y] | | __gt__(self, value, /) -- More --
浙公网安备 33010602011771号