Python内置函数

目录

  1. 内置函数表
  2. reversed()
    1. 语法
    2. 作用
  3. sorted()
    1. 语法
    2. 作用
  4. print()
    1. 作用
    2. 场景
    3. 内部描述
  5. exec()
    1. 作用
    2. 语法
    3. 场景
    4. 内部描述
  6. input()
    1. 语法
    2. 作用
    3. 场景
    4. 内部描述
    5. 注意
  7. eval()
    1. 语法
    2. 作用
    3. 场景
    4. 内部描述
  8. open()
    1. 语法
    2. 作用
    3. 文件打开方式
  9. complex()
    1. 语法
    2. 作用
  10. round()
    1. 语法
    2. 作用
    3. 注意
  11. slice()
    1. 语法
    2. 作用
  12. ord()
    1. 语法
    2. 作用
  13. chr()
    1. 语法
    2. 作用
  14. vars()
    1. 语法
    2. 作用
    3. 场景

内置函数表

函数名 意义
print() 输出对象(字符、列表、元组等)
exec() 执行代码块,不会直接返回运行结果。
input() 接受一个标准输入数据,返回为 string 类型
eval() 用来执行一个字符串表达式,并返回表达式的值。
len() 返回对象(字符、列表、元组等)长度或项目个数
open() 打开一个文件。
hex() 将一个整数转换为十六进制,返回字符串。
oct() 将一个整数转换为八进制,返回字符串。
bin() 将一个整数转换为二进制,返回字符串。
int() 将字符串转换为整数。
float()
str()
repr()
complex() 创建一个复数或者转化一个字符串或数为复数。
pow()
abs() 绝对值
sum() 求和
min() 最小值
max() 最大值
round() 方法返回浮点数的四舍五入值。
slice() 实现切片对象,主要用在切片操作函数里的参数传递
ord() 返回字符的 Unicode 码点的整数。
chr() 返回 Unicode 码位为整数 i 的字符的字符串格式。
vars() 返回模块、类、实例或任何其它具有dict 属性的对象的dict 属性。
sorted() 排序
reversed() 逆序

reversed()

语法

reversed(seq)

作用

返回一个反向的iterator。seq 必须是一个具有 reversed() 方法的对象或者是支持该序列协议 (具有从 0 开始的整数类型参数的 len() 方法和 getitem() 方法)。

sorted()

语法

sorted(iterable, *, key=None, reverse=False)

作用

根据 iterable 中的项返回一个新的已排序列表。

具有两个可选参数,它们都必须指定为关键字参数。

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)。

reverse 为一个布尔值。如果设为 True,则每个列表元素将按反向顺序比较进行排序。

使用functools.cmp_to_key() 可将老式的 cmp 函数转换为 key 函数。

内置的sorted() 确保是稳定的。如果一个排序确保不会改变比较结果相等的元素的相对顺序就称其 为稳定的 — 这有利于进行多重排序(例如先按部门、再按薪级排序)。

print()

作用

输出对象(字符、列表、元组等)。

场景

[su_accordion class=””][su_spoiler title=输出字符串和数字 open=”no” style=”default” icon=”plus” anchor=”” class=””]直接输出字符串和数字。

s = 'This is a number:'
n = 10
print(s,n)
l = [1,2,3]
d = {'age':18,'name':'Ethan'}
t = (4,5,6)
print(l,d,t)
This is a number: 10
[1, 2, 3] {'age': 18, 'name': 'Ethan'} (4, 5, 6)

[/su_spoiler][su_spoiler title=格式化输出 open=”no” style=”default” icon=”plus” anchor=”” class=””]输出某个人的姓名及年龄。

name = 'Ethan'
age = 18
print('My name is %s,I am %d years old'%(name,age))
%[(name)][flags][width][.precision]typecode

字符串格式化符号:

符   号 描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  作用同%e,用科学计数法格式化浮点数
      %g  %f和%e的简写
      %G  %f 和 %E 的简写
      %p  用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号 功能
* 定义宽度或者小数点精度
用做左对齐
+ 在正数前面显示加号( + )
在正数前面显示空格
# 在八进制数前面显示零(‘0′),在十六进制前面显示’0x’或者’0X'(取决于用的是’x’还是’X’)
0 显示的数字前面填充’0’而不是默认的空格
% ‘%%’输出一个单一的’%’
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

[/su_spoiler][su_spoiler title=格式化输出16进制,十进制,八进制整数 open=”no” style=”default” icon=”plus” anchor=”” class=””]

nHex = 0xFF
print("nHex = %x,nDec = %d,nOct = %o" %(nHex,nHex,nHex))

[/su_spoiler][su_spoiler title=格式化输出浮点数(float) open=”no” style=”default” icon=”plus” anchor=”” class=””]

pi = 3.141592653  
print('%10.3f' % pi) #字段宽10,精度3  
print("pi = %.*f" % (3,pi)) #用*从后面的元组中读取字段宽度或精度  
pi = 3.142  
print('%010.3f' % pi) #用0填充空白  
print('%-10.3f' % pi) #左对齐   
print('%+f' % pi) #显示正负号 
      3.142
 pi = 3.142
 000003.142
 3.142     
 +3.142000

[/su_spoiler][su_spoiler title=自动换行 open=”no” style=”default” icon=”plus” anchor=”” class=””]print 会自动在行末加上回车, 如果不需回车,只需在 print 语句的结尾添加一个逗号 , 并设置分隔符参数 end,就可以改变它的行为。

for i in range(0,6):
    print(i)
for i in range(0,6):
    print(i, end=" ")
 0
 1
 2
 3
 4
 5
 0 1 2 3 4 5 

[/su_spoiler][su_spoiler title=print不换行 open=”no” style=”default” icon=”plus” anchor=”” class=””]

for i in range(0,10):
    print(i,end = '')
0123456789

[/su_spoiler][/su_accordion]

内部描述

def print(self, *args, sep=' ', end='\n', file=None): # known special case of 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.
    """
    pass

exec()

作用

函数接受大量代码块并执行。

语法

exec(object, globals, locals)
参数 描述
object 字符串或代码对象。
globals 可选。包含全局参数的字典。
locals 可选。包含局部参数的字典。

场景

[su_accordion class=””][su_spoiler title=“场景1” open=”no” style=”default” icon=”plus” anchor=”” class=””]执行”main.py”。

x = 1 
y = 2
exec(open(main.py).read())
print(x,y)

main.py中的代码如下:

x = 123
y = 456

运行结果如下:

123 456

从运行结果可以看出,原来的变量x,y的值已经改变。exec()将原来的变量覆盖了。

[/su_spoiler]

[su_spoiler title=“场景2” open=”no” style=”default” icon=”plus” anchor=”” class=””]

s = "sum = x + y\nx=1\ny=2"
d = {'x':10,'y':20}
exec(s,d)
print(len(d))
l = list(d.keys())
print(l)

首先定义一段代码,在调用exec()时,将变量d作为参数。

运行结果如下:

4
['x', 'y', 'builtins', 'sum']

可以看到变量d的长度为4,查看d中有哪些数据。可以看到exec()函数执行完毕后,将sum的值存在了变量d中。

[/su_spoiler]

[su_spoiler title=globals,locals open=”no” style=”default” icon=”plus” anchor=”” class=””]

x = 10
y = 100
def fun1():
    s = "global x\nsum = x + y\nprint(x,y)"
    s2 = "x = 110\ny=120\nprint(x,y)"
    x = 20
    y = 200
    d1 = {'x': 10, 'y': 20}
    d2 = {'x': 20, 'y': 30}
    exec(s,locals(),globals())
    exec(s,globals(),locals())
    exec(s,d1,d2)
    exec(s2)
    print(x,y)
fun1()
exec(open('TEXT2.py').read())
print(x,y)

变量s中的代码如下:

global x
sum = x + y
print(x,y)

其中的x为全局变量,在执行时,会使用传递过去的全局变量的值。

运行结果如下:

 20 100
 10 200
 10 30
 110 120
 20 200
 123 456

exec(s2)虽然执行了,但是并没有对fun2()中的局部变量x,y产生影响。

[/su_spoiler]

[/su_accordion]

内部描述

def exec(*args, **kwargs): # real signature unknown
    """
    Execute the given source in the context of globals and locals.
    在配置了全局与局部变量后,执行指定的源。
    The source may be a string representing one or more Python statements
    or a code object as returned by compile().
    The globals must be a dictionary and locals can be any mapping,
    defaulting to the current globals and locals.
    If only globals is given, locals defaults to it.
    如果只提供了全局变量,局部变量默认值为全局变量。
    """
    pass

input()

语法

input([prompt])

作用

获取用户的输入内容,并返回输入的内容,也可以用于暂停程序的运行。

场景

[su_accordion class=””][su_spoiler title=“场景1” open=”no” style=”default” icon=”plus” anchor=”” class=””]从用户那获得一串字符。

s = input('Please input:')
print(s)

运行结果如下:

Please input:hello
hello

[/su_spoiler][su_spoiler title=“场景2” open=”no” style=”default” icon=”plus” anchor=”” class=””]获得用户输入的两个数。

a,b = eval(input('Please input two numbers:'))
print(a,b)

运行结果如下:

Please input two numbers:12,234
12 234

[/su_spoiler][/su_accordion]

内部描述

def input(*args, **kwargs): # real signature unknown
    """
    Read a string from standard input.  The trailing newline is stripped.
    
    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.
    
    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.
    """
    pass

注意

input() 和 raw_input() 这两个函数均能接收字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

s = input('Please input:')
print(s)
[root@localhost python]# python text.py 
 please input:hello
 Traceback (most recent call last):
   File "text.py", line 1, in 
     s = input('please input:')
   File "", line 1, in 
 NameError: name 'hello' is not defined

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

python3 里 input() 默认接收到的是 str 类型。

eval()

语法

eval(expression[, globals[, locals]])
  • expression — 表达式。
  • globals — 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals — 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

作用

用来执行一个字符串表达式,并返回表达式的值。

与exec()内置函数功能类似,但是此函数只能执行一条Python语句。

场景

[su_accordion class=””][su_spoiler title=“场景1” open=”no” style=”default” icon=”plus” anchor=”” class=””]得到用户输入的数组:

a = eval(input('Please input a array:'))
for i in a :
    print(i)

运行结果如下:

Please input a array:1,2,3,4
 1
 2
 3
 4

[/su_spoiler][/su_accordion]

内部描述

def eval(*args, **kwargs): # real signature unknown
    """
    Evaluate the given source in the context of globals and locals.
    
    The source may be a string representing a Python expression
    or a code object as returned by compile().
    The globals must be a dictionary and locals can be any mapping,
    defaulting to the current globals and locals.
    If only globals is given, locals defaults to it.
    """
    pass

open()

语法

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file
    file 是一个path-like object,表示将要打开的文件的路径(绝对路径或者当前工作目录的相对路径),也可以是要被封装的整数类型文件描述符。(如果是文件描述符,它会随着返回的 I/O 对象关闭而关闭,除非 closefd 被设为 False 。)
  • mode:打开文件的方式,缺省为只读模式(r)
  • encoding:编码方式

作用

打开 file 并返回对应的file object。如果该文件不能打开,则触发OSError。

文件打开方式

字符 含义
‘r’ 读取(默认)
‘w’ 写入,并先截断文件
‘x’ 排它性创建,如果文件已存在则失败
‘a’ 写入,如果文件存在则在末尾追加
‘b’ 二进制模式
‘t’ 文本模式(默认)
‘+’ 更新磁盘文件(读取并写入)

complex()

语法

complex([real[, imag]])
  • real — int, long, float或字符串;
  • imag — int, long, float;

作用

用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

round()

语法

round(number[, ndigits ])

作用

返回 number 舍入到小数点后 ndigits 位精度的值。如果 ndigits 被省略或为 None,则返回最接近输入值 的整数。

注意

print(round(2.5))
print(round(2.501))
print(round(2.499))
print(round(2.556,2))
print(round(2.555,2))
print(round(2.554,2))
print(round(1.5))
print(round(3.5))
print(round(2.675,2))
 2
 3
 2
 2.56
 2.56
 2.55
 2
 4
 2.67

注意round(2.5)以及round(2.675,2)。按四舍五入的算法,得出的值应分别为3,2.68。

在官方文档上,有以下一段话:

注解: 对浮点数执行round()的行为可能会令人惊讶:
例如,round(2.675, 2) 将给出 2.67 而不是期望的 2.68。
这不算是程序错误:这一结果是由于大多数十进制小数实际上都不能以浮点数精确地表示。
请参阅 tut-fp-issues 了解更多信息。

简单的说就是,round(2.675, 2) 的结果,不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67,为什么?这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。

slice()

语法

class slice(stop)
class slice(start, stop[, step])
  • start — 起始位置
  • stop — 结束位置
  • step — 间距

作用

返回一个表示由 range(start, stop, step) 所指定索引集的 slice 对象。 其中 start 和 step 参数默认为 None。 切片对象具有仅会返回对应参数值(或其默认值)的只读数据属性 start, stop 和 step。 它们没有其他的显式功能;不过它们会被 NumPy 以及其他第三方扩展所使用。 切片对象也会在使用扩展索引语法时被生成。 例如: a[start:stop:step] 或 a[start:stop, i]。 请参阅itertools.islice() 了解返回迭代器的一种替代版本。

ord()

语法

ord(c)

作用

对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。例如 ord(‘a’) 返回整数 97, ord(‘€’) (欧元符号)返回 8364 。这是chr() 的逆函数。

chr()

语法

chr(i)

作用

返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回 字符串 ‘€’。这是ord() 的逆函数。

vars()

语法

vars([object])

作用

返回模块、类、实例或任何其它具有__dict__ 属性的对象的__dict__ 属性。

模块和实例这样的对象具有可更新的__dict__ 属性;但是,其它对象的__dict__ 属性可能会设为限制写入(例如,类会使用types.MappingProxyType 来防止直接更新字典)。

不带参数时,vars() 的行为类似locals()。请注意,locals 字典仅对于读取起作用,因为对 locals 字典的更新会被忽略。

场景

[su_accordion class=””][su_spoiler title=返回后的对象不可迭代 open=”no” style=”default” icon=”plus” anchor=”” class=””]下面的程序展示了由vars()返回的字典对象不可迭代。

s = "%(name)s %(age)d"%{'name':'Tom','age':18}
d = vars()
print(type(d))
#d = dict(d)
for i in d.items():
    print(i)
 ('name', 'main')
 Traceback (most recent call last):
   File "/Users/ziyuexu/Desktop/WebCrawlers/venv/TEXT2.py", line 5, in 
     for i in d.items():
 RuntimeError: dictionary changed size during iteration

[/su_spoiler][/su_accordion]

你可能感兴趣的:(Python内置函数)