python常用内置函数和关键字

常用内置方法

在Python中有许许多多的内置方法,就是一些Python内置的函数,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作。

方法一
built_list = dir(__builtins__)

方法二
import builtins
built_list = dir(builtins)

其中,以 Error或者 Warning等是Python中的异常类(关于异常可以参考后面的异常学习),以 __开头和结尾的是内置的一些魔术方法(关于魔术方法可以参考面向对象的学习)、剩余的就是一些常用的内置类和方法。

打印(输出)指定的内容,可以打印多个内容(多个参数)

[En]

Print (output) the specified content, you can print multiple content (multiple parameters)

语法: print(*args)

参数 说明 *args 输出的内容,数量任意,任何内容都可以; sep 指定输出内容之间的间隔符,必须是字符串,默认为一个空格; end 最后追加的内容,使用print之后最后追加的内容,必须是字符串,默认是一个换行符 \n; file 将输出的内容写入指定的文件对象中。

常规用法
print(1)  # 1
print(1, 2, 3)  # 1 2 3

sep参数
print(1, 2, 3)  # 1 2 3
print(1, 2, 3, sep=' MSR ')  # 1 MSR 2 MSR 3

end参数
print(1, 2)
print(3, 4)
'''
1 2
3 4
'''
print(1, 2, end='')
print(3, 4)
'''
1 23 4
'''

file参数
fp = open('test.txt', 'w', encoding='UTF-8')
print('Hello Word.', file=fp)

返回输入的结果, 返回的结果为字符串类型;输入时,接收到enter(回车)时将输入内容返回;

input_content = input()  # 输入 -- Hello MSR.

print(input_content)  # Hello MSR.

可以在input中输入内容,作为交互信息(就是一个标准输出)
input('请输入你的银行卡密码:')

返回数字的绝对值,唯一参数必须说是数字类型,即:int float bool complex

res = abs(-100)
print(res)  # 100

res = abs(True)
print(res)  # 1

返回对十进制数进行舍入的结果

[En]

Returns the result of rounding a decimal number

参数 说明 number 四舍五入的数字 ndigits 保留的小数位数,默认为None,即不保留小数

不保留小数
res = round(10.6)
print(res)  # 11

保留小数点,即保留的四舍五入的最低位<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Keep the decimal, the lowest place retained to be rounded</font>*</details>
res = round(10.567, 2)
print(res)  # 10.57

!!!
如果数字为n.5的时候,n为奇数才会5入,否则后面还要更多的小数位才能是我们理解当中的样子,也就是必须实际的大于.5这个临界值,可以使用标准库decimal处理掉这个问题。
res = round(4.5)
print(res)  # 4
res = round(3.5)
print(res)  # 4

res = round(4.51)
print(res)  # 5
res = round(3.51)
print(res)  # 4

多位小数点的情况正好相反,只有偶数才会进入5位。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>The situation of multi-decimal places is just the opposite, only an even number will enter 5.</font>*</details>
res = round(4.35, 1)
print(res)  # 4.3
res = round(4.45, 1)
print(res)  # 4.5
res = round(4.555, 2)
print(res)  # 4.55
res = round(4.665, 2)
print(res)  # 4.67

计算一个数值的N次幂

语法: pow(parameter1,parameter2,[parameter3])

参数1表示操作数,参数2表示幂,参数3表示除数,并且计算幂运算结果的除法的余数。

[En]

Parameter 1 represents the Operand, parameter 2 represents the power, parameter 3 represents the divisor, and the remainder of the division of the power operation result is calculated.

还记得python的幂运算符嘛?
res = pow(2, 3)
print(res)        # 8
print(2 * 2 * 2)  # 8
print(2 ** 3)     # 8

除法求余数
res = pow(2, 3, 3)
print(res)    # 2
print(8 % 3)  # 2

计算容器中数字的和(字符串除外)。容器中的数据必须是数字类型。

[En]

Calculate the sum of numbers in a container (except strings). The data in the container must be of numeric type.

lst = [1, 2, 3, 4]
res = sum(lst)
print(res)  # 10

max获取序列中的最大值,min获取序列中的最小值,max&min属于高阶函数;

语法: max(parameter1,[parameter2, parameter3, ...],key=None)

参数 说明 parameter1 指定的序列,容器类型数据(包括字符串) parameter2… 多个值,可以是多个参数一,这些值可以是数值或者是序列 key 函数名,容器中的值的计算方式,按照此计算方式返回值,默认为None,即单纯的比数字大小;

不指定key
lst = [0, 1, 2, 3, 4]
res = max(lst)  # 4
res = min(lst)  # 0

多参数
1、参数可以不只一个,但是多个参数必须相同的数据类型,比较参数中的第一个参数返回数据,但是众序列中的第一个参数都必须是相同的数据类型,如果是字符串,比如ABC之间的比较是根据ASCII码进行的。
lst1 = [0, 100]
lst2 = [2, 10]
print(max(lst1, lst2))  # [2, 10]
print(min(lst1, lst2))  # [0, 100]
2、参数可以不是容器类型数据,可以直接比较多个数字(其实也就是元组了)
print(max(1, 2, 3))  # 3
print(min(1, 2, 3))  # 1

指定key,经过key指定的函数处理,比较返回的结果,然后返回对应的数据
lst = [0, 1, 2, 3, 4]

def func(num):
    return num * -1

res = max(lst, key=func)  # 0
print(res)
res = min(lst, key=func)  # 4
print(res)

对一个序列中的值进行排序,默认按照升序(从小到大)排列;数字按照大小排序,ASCII字符串按照编码顺序排序,其余字符的排序规律不清,可能是按照某个指定的编码的先后进行排序。

语法: sorted(parameter1, key=None, reverse=False)

参数 说明 parameter1 指定排序的序列数据 key 指定排序的方法,使用方法和max等一众高阶函数的方法是一样的; reverse 排序方式,默认为False, 即为升序,True为降序;

使用list为例
lst = [2, 0, 1, 3, 4]

默认为升序
new_lst = sorted(lst)
print(new_lst)  # [0, 1, 2, 3, 4]

降序
new_lst = sorted(lst, reverse=True)
print(new_lst)  # [4, 3, 2, 1, 0]

注意和list内置方法的区别,list.sort方法在原数据上重新排序,sorted方法返回一个新的数据;
lst1 = [1, 0, 3]
lst1.sort()
print(lst1)  # [0, 1, 3]

lst2 = [1, 0, 3]
new_lst2 = sorted(lst2)
print(lst2)  # [1, 0, 3]
print(new_lst2)  # [0, 1, 3]

zip & enmerate 见推导式。

还记得如何直接表示非十进制数吗?

[En]

Remember how to directly represent a non-decimal number?

  • 0b 开头表示二进制数;
  • 0o 开头表示八进制数;
  • 0h 开头表示十六进制数;
十进制数 转 二进制
res = bin(255)
print(res)  # 0b11111111

八进制 转 二进制
res = bin(0o377)
print(res)  # 0b11111111

十六进制 转 二进制
res = bin(0xff)
print(res)  # 0b11111111

还记得ASCII编码吗?下面的函数可以将ASCII编码中包含的字符在字符和序号之间转换

返回 97 号字符
res = chr(97)
print(res)  # a
res = ord('A')
print(res)  # 65

默认情况下,返回当前位置的类、函数和变量。

[En]

By default, classes, functions, and variables at the current location are returned.

定义函数
def func():
    pass

定义类
class Class:
    pass

定义变量
var = 1

返回属于当前位置(文件)的类、函数和变量<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Returns classes, functions, and variables that belong to the current location (file)</font>*</details>
res = dir()
print(res)  # ['Class', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'func', 'var']

def func1():
    inner_var = 1  # 内置变量(属于函数func1)
    print(dir())  # 返回输入当前位置(函数func1)的类、函数、变量
func1()  # ['inner_var']

range 本身不是一个函数,而是一个类,但是在日常的使用过程中经常被作为一个函数使用;

下面的解释主要是作为一个函数来解释。

[En]

The following explanation is mainly used as a function to explain.

语法: range(value, [stop_value,] [step_value])

参数 说明 value 意义为返回的起点数值;但是如果单独使用话本身的含义为0,原本指定的值成为stop_value的值; stop_value 意义为返回数的最大范围,但是终点数不是其本身,如果stop_value是0或者正数,就是stop_value减一,如果stop_value是负数,就是stop_value加一; step_value 步长,每个返回值之间的间隔数,默认为1;

在实际的使用过程中往往配合for循环使用
for i in range(10):
    print(i)

但是此例中因为便于查看不使用for循环演示,而是改用list强转演示;

一个参数:表示返回 0 ~ N-1 的数值
lst = list(range(10))
print(lst)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

两个参数表示返回 N ~ M-1 的数值
lst = list(range(3, 10))
print(lst)  # [3, 4, 5, 6, 7, 8, 9]

三个参数表示返回 N ~ M-1 的数值,但是每个数间隔F
lst = list(range(3, 10, 2))
print(lst)  # [3, 5, 7, 9]

倒序: 只要让步长变为负数即可,但是也要注意 N 和 M 的数值确保范围准确
lst = list(range(10, -10, -4))
print(lst)  # [10, 6, 2, -2, -6]

上面的方法可以将字符串编译为python代码执行,eval只能适用于简单的代码;exec可以将更加复杂的代码执行;

eval 只能编译简单的代码
char = 'print("Hello MSR.")'
eval(char)  # Hello MSR.

定义变量(eval不能编译,但是exec可以)
char = 'new_char = "My motherland is China."'
eval(char)  # SyntaxError
exec(char)
print(new_char)  # My motherland is China.

将字符串中的转义字符失效,还记得字符串前缀 r吗?他们的效果是一样的,但是repr会将两边的引号也显示出来。

转义
char = 'Hello\nChina.'
print(char)
'''
Hello
China.

'''

原型化
char = repr(char)
print(char)  # 'Hello\nChina.'

repr 和 字符串前缀 r 的不同:显示出两边的引号
print(r'MSR')  # MSR
print(repr('MSR'))  # 'MSR'

指定数据产生的哈希值是在哈希算法之后返回的,相同的两个数据经过哈希算法后的结果必须相同,所以在文件验证和密码加密等场景中使用通用的哈希运算。

[En]

The hash value generated by the specified data is returned after the hash algorithm, and the result of the same two data after the hash algorithm must be the same, so the general hash operation is used in scenarios such as file verification and password encryption.

每次的结果可能不会相同,但相同数据的结果必须同时相同。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>The results may not be the same each time, but the results of the same data must be the same at the same time.</font>*</details>
hash1 = hash('abs')
hash2 = hash('abs')
print(hash1)
print(hash2)
'''
-4611394003149070947
-4611394003149070947
'''

再上述使用hash()方法的时候,我们发现相同数据在多次运算的时候,结果不一定相同,这是因为控制hash的环境变量 PYTHONHASHSEED所作用的,如果在启动python的时候,设定该环境变量,则可以复现hash值,也就是每次的hash值都是相同的。

示例
不指定PYTHONUNBUFFERED,hash每次都是随机的
python main.py

指定PYTHONUNBUFFERED,hash是固定复现的
PYTHONUNBUFFERED=11 python main.py

查看各种函数和类的帮助文档,还记得如何注释自定义函数和类的帮助文档吗?

[En]

Check out the help documentation for various functions and classes, and remember how to annotate help documentation for custom functions and classes?

类似的功能还有函数的内置方法 __doc__() 可以实现;

查看print方法的帮助文档
print_help = help(print)
print(print_help)
"""
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.

None
"""

四个数值型方法和五个容器类型方法,主要用于数据生成和数据之间的强转换

[En]

Four numeric type methods and five container type methods, mainly used for data generation and strong conversion between data

有关更多信息,请参阅大数据类型和数据之间的强制转换。

[En]

For more information, see the forced conversion between big data types and data.

返回一个数据的内存地址,这个地址是唯一的,这个东西关系到了一个程序占据资源空间的大小,也是评判一个程序是否优劣的标准之一,还记得我们之前讲过的Python的缓存机制吗?

char = 'Hello MSR.'
char_id = id(char)
print(char_id)  # 2884357927408

查看容器类型数据的长度,即一级元素的数量

[En]

View the length of a container type data, that is, the number of first-level elements

lst = [1, 2, 3]
lst_length = len(lst)
print(lst_length)  # 3

列表类型数据还有内置方法 __len__ 也可以查看
lst_length = lst.__len__()
print(lst_length)

一般配合range 遍历容器使用
lst = [1, 2, 3]
for i in range(len(lst)):
    print(lst[i])

type是Python的一个内置类,作用是返回一个数据的类型

char = 123
char_type_obj = type(char)
print(char_type_obj)  #
char_type = char_type_obj.__name__
print(char_type)  # int

判断数据类型
if char_type == 'str':
    print(char)
else:
    print(char_type)

用于确定数据类型并返回布尔值

[En]

Used to determine the type of data and return a Boolean value

语法: isinstance(x, A_tuple)

参数 说明 x 要判断的数据 A_tuple 要判断的数据类型,如果x是该数据类型返回真,反之为假;也可以是一个元组中包含多个数据类型,如果x的数据类型是元组中的其中之一就返回真,反之返回假;

res = isinstance(100, int)
print(res)  # True

res = isinstance(False, (str, float, tuple))
print(res)  # False

注意:Python中的 布尔型 和 整型 在使用isinstance判断的时候是相同的
res = isinstance(False, (str, int, tuple))
print(res)  # True

用法和 isinstance一模一样,用于判断指定类和类之间是否存在子父关系, isinstanceissubclass的详细用法见 &#x9762;&#x5411;&#x5BF9;&#x8C61;&#xFF08;&#x7C7B;&#x7684;&#x7EE7;&#x627F;&#xFF09;

详情请见IO文件管理;

用于输出所有全局和局部变量,详细信息请参见函数高级(全局空间和局部空间)。

[En]

Used to output all global and local variables, see function advance (global space and local space) for details.

用于退出程序,结束程序

[En]

Used to exit the program, end the program

quit()
exit()

常用关键字

启动系统中的所有关键字<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Boot out all keywords in the system</font>*</details>
import keyword

print(keyword.kwlist)

关键字 作用 pass 过,占位符;是空语句,本身没有作用,个别情况为了保持程序结构的完整性二占据一些必要的位置; NotImplemented 同”None”; Ellipsis 省略号; … 同”Ellipsis” break 终止循环; continue 跳过当前循环; if…elif..else… if语句; for…in…else… for循环; while…else… while循环; del 删除变量,释放空间; None 基础数据类型,表示空; global 声明全局变量; nonlocal 声明局部变量; def 定义函数; class 定义类; as 别名;

有太多的关键字没有列出。

[En]

There are so many keywords that are not listed.

常见内置属性

print(__name__)   # 当前模块
print(__file__)  # 当前文件路径
print(__doc__)   # 文档注释
print(__package__)  # 位置

Original: https://www.cnblogs.com/msr20666/p/16265393.html
Author: 小小垂髫
Title: python常用内置函数和关键字

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499573/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球