python 内置函数
| 内置函数 | ||||
|---|---|---|---|---|
| abs() | delattr() | hash() | memoryview() | set() |
| all() | dict() | help() | min() | setattr() |
| any() | dir() | hex() | next() | slice() |
| ascii() | divmod() | id() | object() | sorted() |
| bin() | enumerate() | input() | oct() | staticmethod() |
| bool() | eval() | int() | open() | str() |
| breakpoint() | exec() | isinstance() | ord() | sum() |
| bytearray() | filter() | issubclass() | pow() | super() |
| bytes() | float() | iter() | print() | tuple() |
| callable() | format() | len() | property() | type() |
| chr() | frozenset() | list() | range() | vars() |
| classmethod() | getattr() | locals() | repr() | zip() |
| compile() | globals() | map() | reversed() | __import__() |
| complex() | hasattr() | max() | round() | - |
abs(x)
返回数字的绝对值。参数可以是整数或浮点数。如果参数是复数,则返回其大小。
>>> abs(1)
1
>>> abs(-1.1)
1.1
all(iterable)
如果 iterable 的所有元素为真(或迭代器为空),返回 True 。
>>> i = [1, 2]
>>> all(i)
True
>>> i = [0, 1]
>>> all(i)
False
>>> i = []
>>> all(i)
True
any(iterable)
如果 iterable 的任一元素为真则返回 True。 如果迭代器为空,返回 False。
>>> i = [1, 2]
>>> any(i)
True
>>> i = [0, 1]
>>> any(i)
True
>>> i = [0, 0]
>>> any(i)
False
>>> i = []
>>> any(i)
False
ascii(object)
就像函数 repr(),返回一个对象可打印的字符串,但是 repr() 返回的字符串中非 ASCII 编码的字符,会使用 \x、\u 和 \U 来转义。生成的字符串和 Python 2 的 repr() 返回的结果相似。
>>> i = []
>>> ascii(i)
'[]'
>>> i = {'a': 'b'}
>>> ascii(i)
"{'a': 'b'}"
bin(x)
将一个整数转变为一个前缀为“0b”的二进制字符串。结果是一个合法的 Python 表达式。如果 x 不是 Python 的 int 对象,那它需要定义 __index__() 方法返回一个整数。
>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'
如果不一定需要前缀“0b”,还可以使用如下的方法。
>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')
class bool(x)
返回一个布尔值,True 或者 False。
>>> bool
<class 'bool'>
>>> bool(1)
True
>>> bool(0)
False
>>> bool('')
False
>>> bool('a')
True
chr(i)
返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回字符串 ‘€’。这是 ord() 的逆函数。
实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError 异常。
>>> chr(1)
'\x01'
>>> chr(97)
'a'
>>> chr(1114111)
'\U0010ffff'
>>> chr(1114112)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(0x110000)
@classmethod
把一个方法封装成类方法。
一个类方法把类自己作为第一个实参,就像一个实例方法把实例自己作为第一个实参。请用以下习惯来声明类方法:
class C:
@classmethod
def f(cls, arg1):
print(arg1)
// 不需要实例化
C.f(arg1 = 'abc')
输出
abc
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
将一个字符串编译为字节代码。返回表达式执行结果。
source— 字符串或者AST(Abstract Syntax Trees)对象。。filename— 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。mode— 指定编译代码的种类。可以指定为:exec— source 是语句序列eval— source 是单一表达式single— source 是单个交互式语句
flags— 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。flags和dont_inherit是用来控制编译源码时的标志
>>> str = "for i in range(0,10): print(i)"
>>> c = compile(str,'','exec')
>>> c
<code object <module> at 0x10a6395d0, file "", line 1>
>>> exec(c)
0
1
2
3
4
5
6
7
8
9
>>> str = "3 * 4 + 5"
>>> a = compile(str,'','eval')
>>> eval(a)
17
class complex([real[, imag]])
返回值为 real + imag*1j 的复数,或将字符串或数字转换为复数。如果第一个形参是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。如果省略了 imag,则默认值为零,构造函数会像 int 和 float 一样进行数值转换。如果两个实参都省略,则返回 0j。
real— int, long, float 或 字符串imag— int, long, float
>>>complex(1, 2)
(1 + 2j)
>>> complex(1) # 数字
(1 + 0j)
>>> complex("1") # 当做字符串处理
(1 + 0j)
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
>>> complex("1+2j")
(1 + 2j)
delattr(object, name)
setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x, ‘foobar’) 等价于 del x.foobar 。
object— 对象name— 必须是对象的属性。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
print('x = ',point1.x)
print('y = ',point1.y)
print('z = ',point1.z)
delattr(Coordinate, 'z')
print('--删除 z 属性后--')
print('x = ',point1.x)
print('y = ',point1.y)
# 触发错误
print('z = ',point1.z)
输出结果
('x = ', 10)
('y = ', -5)
('z = ', 0)
--删除 z 属性后--
('x = ', 10)
('y = ', -5)
Traceback (most recent call last):
File "test.py", line 22, in <module>
print('z = ',point1.z)
AttributeError: Coordinate instance has no attribute 'z'
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
创建一个新的字典。
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
创建字典
dict = {} # 创建空字典
dict = {'a': 'lily'}
访问字典
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print(dict['Name'])
// 输出结果 Zara
如果用字典里没有的键访问数据,会输出错误
print(dict['Country'])
// 输出错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Country'
如何避免
修改字典
dict['Age'] = 8 # 更新
dict['School'] = '第一中学' # 添加
删除字典/元素
del dict['Age'] # 删除键为Age的条目
dict.clear() # 清空字典
del dict # 删除字典
字典内置函数 & 方法
| 函数 | 描述 |
|---|---|
| cmp(dict1, dict2) | 比较两个字典元素。 |
| len(dict) | 计算字典元素个数,即键的总数。 |
| str(dict) | 输出字典可打印的字符串表示。 |
| type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
| 方法 | 描述 |
|---|---|
| dict.clear() | 删除字典内所有元素 |
| dict.copy() | 返回一个字典的浅复制 |
| dict.fromkeys(seq[, val]) | 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 |
| dict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 |
| dict.has_key(key) | 如果键在字典dict里返回true,否则返回false |
| dict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
| dict.keys() | 以列表返回一个字典所有的键 |
| dict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
| dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
| dict.values( pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值 |
| popitem() | 随机返回并删除字典中的一对键和值。 |
dir([object])
函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。
object— 对象、变量、类型。
dir() # 获得当前模块的属性列表
dir([]) # 查看列表的方法
divmod(a, b)
把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
>>> divmod(7, 2)
(3, 1) # 3为商,1为余数
>>> divmod(8, 2)
(4, 0)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
enumerate(iterable, start=0)
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
Python 2.3. 以上版本可用,2.6 添加 start 参数。
sequence— 一个序列、迭代器或其他支持迭代对象。start— 下标起始位置。
>>> user = ['lily', 'andy', 'baby']
>>> list(enumerate(user))
[(0, 'lily'), (1, 'andy'), (2, 'baby')]
# 下标从1开始
>>> list(enumerate(user, start = 1))
[(1, 'lily'), (2, 'andy'), (3, 'baby')]
>>>
for 循环使用 enumerate
user = ['lily', 'andy', 'baby']
for i, u in enumerate(user, 1):
print(i, u)
输出结果
1 lily
2 andy
3 baby
eval(expression[, globals[, locals]])
用来执行一个字符串表达式,并返回表达式的值。
expression— 表达式。globals— 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。locals— 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
>>> x = 7
>>> eval( '3 * x')
21
>>> eval('pow(2, 2)')
4
>>> eval('2 + 2')
4
exec(object[, globals[, locals]])
执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。
expression— 表达式。globals— 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。locals— 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
# 执行单行
exec 'print("hello world")'
# 执行多行
expr = """
for i in range(5):
print(i)
"""
exec(expr)
# 执行传参
x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
y = 20
exec(expr) # 输出: 60
exec(expr, {'x': 1, 'y': 2}) # 输出: 33
exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4}) # 输出: 34
func()
filter(function, iterable)
用 iterable 中函数 function 返回真的那些元素,构建一个新的迭代器。iterable 可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 function 是 None ,则会假设它是一个身份函数,即 iterable 中所有返回假的元素会被移除。
function— 判断函数。iterable— 可迭代对象。
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list(newlist))
输出结果
[1, 3, 5, 7, 9]
class float([x])
返回从数字或字符串 x 生成的浮点数。
如果没有实参,则返回 0.0 。
x— 整数或字符串
>>> float('+1.23')
1.23
>>> float(' -12345\n')
-12345.0
>>> float('1e-003')
0.001
>>> float('+1E6')
1000000.0
>>> float('-Infinity')
-inf
format(value[, format_spec])
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
设置参数模式
>>> print("你好,我叫 {name}, 今年 {age} 岁".format(name="lily", age=28))
你好,我叫 lily, 今年 28 岁
# 通过字典设置参数
>>> user = {"name": "lily", "age": 28}
>>> print("你好,我叫 {name}, 今年 {age} 岁".format(**user))
你好,我叫 lily, 今年 28 岁
# 通过列表索引设置参数
>>> user = ['lily', 28]
>>> print("你好,我叫 {0[0]}, 今年 {0[1]} 岁".format(user)) # "0" 是必须的
数字格式
>>> print("{:.2f}".format(3.1415926));
3.14
| 格式 | 输入 | 输出 | 描述 |
|---|---|---|---|
| {:.2f} | 3.1415926 | 3.14 | 保留小数点后两位 |
| {:+.2f} | 3.1415926 | +3.14 | 带符号保留小数点后两位 |
| {:.0f} | 3.1415926 | 3 | 不带小数(四舍五入) |
| {:0>2d} | 3 | 03 | 数字补零 (填充左边, 宽度为2) |
| {:x<4d} | 3 | 5xxx | 数字补x (填充右边, 宽度为4) |
| {:,} | 1000000 | 1,000,000 | 以逗号分隔的数字格式 |
| {:.2%} | 0.25 | 25.00% | 百分比格式 |
| {:.2e} | 1000000000 | 1.00e+09 | 指数记法 |
| {:>10d} | 13 | 13 | 左对齐 (宽度为10) |
| {:<10d} | 13 | 13 | 左对齐 (宽度为10) |
| {:^10d} | 13 | 13 | 中间对齐 (宽度为10) |
| {:b} | 11 | 1011 | 二进制 |
| {:d} | 11 | 11 | 十进制 |
| {:o} | 11 | 13 | 八进制 |
| {:x} {:#x} {:#X} |
11 | b 0xb 0XB |
十六进制 |
可以使用大括号 {} 来转义大括号
>>> print("你好,我叫 {name}, 今年 {{28}} 岁".format(name="lily"))
class frozenset([iterable])
返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。
iterable— 可迭代的对象,比如列表、字典、元组等等。
>>> a = frozenset(range(10)) # 生成一个新的不可变集合
>>> a
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
>>> b = frozenset('abcdefg')
>>> b
frozenset({'f', 'd', 'b', 'e', 'c', 'g', 'a'})
getattr(object, name[, default])
用于返回一个对象属性值。
object— 对象。name— 字符串,对象属性。default— 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
class User(object):
name = 'lily'
u = User()
getattr(u, 'name') # 获取属性 name 值
// 输出: lily
触发异常
getattr(u, 'age')
# 获取不存在属性 age 值, 触发异常
Traceback (most recent call last):
File "test.py", line 5, in <module>
getattr(u, 'age') # 获取属性 age 值
AttributeError: 'User' object has no attribute 'age'
globals()
返回表示当前全局符号表的字典。这总是当前模块的字典(在函数或方法中,不是调用它的模块,而是定义它的模块)。
>>> a = 'hello world'
>>> print(globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量 (包括定义的a变量)。
hasattr(object, name)
用于判断对象是否包含对应的属性。
object— 对象。name— 字符串,属性名。
class User(object):
name = 'lily'
u = User()
print(hasattr(u, 'name')) # True
print(hasattr(u, 'age')) # False
hash(object)
用于获取取一个对象(字符串或者数值等)的哈希值。
object— 对象;
>>> hash('hello world')
2107571125387690180
help([object])
函数用于查看函数或模块用途的详细说明。
object— 对象;
>>> help('sys') # 查看 sys 模块的帮助
>>> help('str') # 查看 str 数据类型的帮助
>>> a = [1,2,3]
>>> help(a) # # 查看列表 list 帮助信息
>>> help(a.append) # 显示list的append方法的帮助
hex(x)
将整数转换为以“0x”为前缀的小写十六进制字符串。
x— 10进制整数
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
id(object)
用于获取对象的内存地址。
object— 对象;
>>> a = 'hello world
>>> id(a)
4469164848
input([prompt])
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
prompt: 提示信息
>>> a = input("请输入值: ")
请输入值: abc
>>> type(a)
<class 'str'>
>>> b = input("请输入值: ")
请输入值: 123
>>> type(b)
<class 'str'>
class int([x])
class int(x, base=10)
用于将一个字符串或数字转换为整型。
x— 字符串或数字。base— 进制数,默认十进制。
>>>int() # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)
10
>>> int('10',8)
8
isinstance(object, classinfo)
用来判断一个对象是否是一个已知的类型,类似 type()
type()不会认为子类是一种父类类型,不考虑继承关系isinstance()会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
object— 实例对象。classinfo— 可以是直接或间接类名、基本类型或者由它们组成的元组。
issubclass(class, classinfo)
用于判断参数 class 是否是类型参数 classinfo 的子类。如果 class 是 classinfo 的子类返回 True,否则返回 False。
class— 类。classinfo— 类。
class A:
pass
class B(A):
pass
print(issubclass(B,A)) # 返回 True
iter(object[, sentinel])
用来生成迭代器。
object— 支持迭代的集合对象。sentinel— 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的next()方法时,都会调用 object。
len(s)
返回对象(字符、列表、元组等)长度或项目个数。
s— 对象。
>>> x = [1, 2, 3]
>>> len(x) #列表元素个数
3
>>> x = 'hello'
>>> len(x) # 字符串长度
5
class list([iterable])
用于将元组或字符串转换为列表。
seq— 要转换为列表的元组或字符串。
aTuple = ('Google', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)
输出
列表元素 : ['Google', 'Taobao']
字符串
str="Hello World"
list2=list(str)
print ("列表元素 : ", list2)
输出
列表元素 : ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
locals()
以字典类型返回当前位置的全部局部变量。对于函数, 方法, lambda 函式, 类, 以及实现了 call 方法的类实例, 它都返回 True。
map(function, iterable, ...)
根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
function— 函数iterable— 一个或多个序列
# 计算平方数
def square(x):
return x ** 2
# 计算列表各个元素的评分
map(square, [1, 2, 3, 4])
输出
[1, 4, 9, 16]
多个 iterable
# 提供了两个列表,对相同位置的列表数据进行相加
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
输出
[3, 7, 11, 15, 19]
max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
返回给定参数的最大值,参数可以为序列。
print(max([1, 2, 3, 4]))
print(max(1, 2, 3))
memoryview(obj)
返回给定参数的内存查看对象(Momory view)。
所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
>>>v = memoryview(bytearray("abcefg", 'utf-8'))
>>> print(v[1])
98
>>> print(v[-1])
103
>>> print(v[1:4])
<memory at 0x10f543a08>
>>> print(v[1:4].tobytes())
b'bce'
min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])
返回给定参数的最小值,参数可以为序列。
next(iterator[, default])
返回迭代器的下一个项目。
iterator— 可迭代对象default— 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break
class object
返回一个没有特征的新对象。
>>> a = object()
>>> a
<object object at 0x10a20d280>
oct(x)
将一个整数转变为一个前缀为“0o”的八进制字符串。
>>> oct(8)
'0o10'
>>> oct(-56)
'-0o70'
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。注意: 使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。
file: 必需,文件路径(相对或者绝对路径)。mode: 可选,文件打开模式buffering: 设置缓冲encoding: 一般使用utf8errors: 报错级别newline: 区分换行符closefd: 传入的file参数类型opener:
mode参数有:
| 模式 | 描述 |
|---|---|
| t | 文本模式 (默认)。 |
| x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
| b | 二进制模式。 |
| + | 打开一个文件进行更新(可读可写)。 |
| U | 通用换行模式(不推荐)。 |
| r | 以只读方式打开文件。文件的指针将会放在文件的开头。(默认模式)。 |
| rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
| r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
| rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
| w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
| wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
| w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
| wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
| a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
| ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
打开并显示文件内容
f = open("./text.txt")
content = f.read()
colse(f)
print(content)
ord(c)
ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
c— 字符。
>>>ord('a')
97
>>> ord('€')
8364
>>>
pow(x, y[, z])
返回 x 的 y 次幂, 相当于 xy;
如果 z 存在,则对 z 取余, 相当于 xy % z
>>> print(pow(2,3)) # 2 * 2 * 2 = 8
8
>>> print(pow(2,3, 2)) # (2 * 2 * 2) % 2 (余为0)
0
>>> print(pow(2,3, 3)) # (2 * 2 * 2) % 3 (余数为2)
2
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
用于打印输出
objects— 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。sep— 用来间隔多个对象,默认值是一个空格。end— 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。file— 要写入的文件对象。
>>> print(1) # 打印数字
1
>>> print("hello world") # 打印字符
hello world
>>> print("a", "b") # 打印多个字符
a b
>>> print("a""b") # 打印多个字符 (无间隔
ab
>>> print("a", "b", sep = "+") # 添加指定间隔的字符
a+b
class property(fget=None, fset=None, fdel=None, doc=None)
作用是在新式类中返回属性值。
fget— 获取属性值的函数fset— 设置属性值的函数fdel— 删除属性值函数doc— 属性描述信息
class C:
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
等价于
class C:
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
range(stop)
range(start, stop[, step])
返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> for i in range(5): print(i)
...
0
1
2
3
4
repr(object)
将对象转化为供解释器读取的形式。
>>>s = 'hello world'
>>> repr(s)
"'hello world'"
>>> dict = {'hello': 'world'};
>>> repr(dict)
"{'hello': 'world'}"
>>>
reversed(seq)
返回一个反转的迭代器(iterator)。
seq— 要转换的序列,可以是 tuple, string, list 或 range。
>>> str = 'hello world'
>>> print(list(reversed(str)))
['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']
>>> str = range(1, 10)
>>> print(list(reversed(str)))
[9, 8, 7, 6, 5, 4, 3, 2, 1]
round(number[, ndigits])
返回 number 舍入到小数点后 ndigits 位精度的值。 如果 ndigits 被省略或为 None,则返回最接近输入值的整数。
number— 数字表达式。ndigits— 表示从小数点位数,其中 x 需要四舍五入,默认值为 0。
>>> print(round(100.123456789))
100
>>> print(round(100.123456789, 2))
100.12
>>> print(round(100.123456789, 8)) # 四舍五入
100.12345679
class set([iterable])
创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
iterable— 可迭代对象对象;
>>> x = set('hello')
>>> y = set('world')
>>> x, y # 合并输出
({'h', 'e', 'l', 'o'}, {'o', 'w', 'r', 'd', 'l'})
>>> x & y # 交集
{'l', 'o'}
>>> x | y # 并集
{'h', 'o', 'w', 'r', 'd', 'e', 'l'}
>>> x - y # 差集
{'h', 'e'}
setattr(object, name, value)
对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
object— 对象。name— 字符串,对象属性。value— 属性值。
class User(object):
name = 'lily'
u = User()
setattr(u, 'name', 'laly') # 设置已存在的值
setattr(u, 'age', 28) # 设置不存在的值
print("{0} 的年龄是:{1}岁".format(u.name, u.age))
输出结果:
laly 的年龄是:28岁
class slice(stop)
class slice(start, stop[, step])
实现切片对象,主要用在切片操作函数里的参数传递。
start— 起始位置stop— 结束位置step— 间距
>>> myslice = slice(5)
>>> myslice
slice(None, 5, None)
>>> arr = range(10)
>>> arr[myslice]
range(0, 5)
>>> list(arr[myslice])
[0, 1, 2, 3, 4]
sorted(iterable, *, key=None, reverse=False)
对所有可迭代的对象进行排序操作。
iterable— 可迭代对象。key— 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse— 排序规则,True降序 ,False升序(默认)。
arr1 = [5, 2, 3, 1, 4]
print(sorted(arr1))
// 输出: [1, 2, 3, 4, 5]
arr2 = {1: "A", 2: "B", 3: "C"}
print(sorted(arr2))
// 输出: [1, 2, 3]
arr3 = [5, 2, 3, 1, 4]
print(sorted(arr3, key = lambda x: x*-1)) // 将所有的值 乘以-1,再排序
// 输出: [5, 4, 3, 2, 1]
@staticmethod
将方法转换为静态方法。
class C(object):
@staticmethod
def f():
print('hello world');
C.f(); # 静态方法无需实例化
cobj = C()
cobj.f() # 也可以实例化后调用
class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')
将对象转化为适于人阅读的形式。
>>> s = 'hello world'
>>> str(s)
'hello world'
>>> dict = {'hello': 'world'}
>>> str(dict)
"{'hello': 'world'}"
sum(iterable[, start])
对序列进行求和计算。
iterable— 可迭代对象,如:列表、元组、集合。start— 指定相加的参数,如果没有设置这个值,默认为0。
>>>sum([0,1,2])
3
>>> sum((2, 3, 4), 1) # 元组计算总和后再加 1
10
>>> sum([0,1,2,3,4], 2) # 列表计算总和后再加 2
12
super([type[, object-or-type]])
用于调用父类(超类)的一个方法。
type— 类。object-or-type— 类,一般是 self
class A:
def add(self, x):
y = x+1
print(y)
class B(A):
def add(self, x):
super().add(x)
b = B()
b.add(2) # 3
tuple([iterable])
将列表转换为元组。
>>> l = ['hello', 'world']
>>> t = tuple(l)
>>> t
('hello', 'world')
lass type(object)
class type(name, bases, dict)
如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。
name— 类的名称。bases— 基类的元组。dict— 字典,类内定义的命名空间变量。
>>> type(1)
<class 'int'>
>>> type('1')
<class 'str'>
>>> type([2])
<class 'list'>
>>> type({'1'})
<class 'set'>
>>> type({'1':'a'})
<class 'dict'>
>>> class X:
... a = 1
...
>>> X = type('X', (object,), dict(a=1))
vars([object])
返回对象object的属性和属性值的字典对象。
>>> print(vars())
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
>>> class X:
... a = 1
...
>>> print(vars(X))
{'__module__': '__main__', 'a': 1, '__dict__': <attribute '__dict__' of 'X' objects>, '__weakref__': <attribute '__weakref__' of 'X' objects>, '__doc__': None}
>>> x = X()
>>> print(vars(x))
{}
zip(*iterables)
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [4, 5, 6, 7, 8]
>>> zipped = zip(a, b)
>>> zipped
<zip object at 0x10aa57ac8>
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a, c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a, b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
__import__(name, globals=None, locals=None, fromlist=(), level=0)
用于动态加载类和函数 。
如果一个模块经常变化就可以使用 import() 来动态载入。
name— 模块名
a.py 文件代码:
#!/usr/bin/env python
#encoding: utf-8
import os
print ('在 a.py 文件中 %s' % id(os))
test.py 文件代码:
#!/usr/bin/env python
#encoding: utf-8
import sys
__import__('a') # 导入 a.py 模块
执行 test.py 文件,输出结果为:
在 a.py 文件中 4394716136

