Python内置语法手册

发布时间 2023-12-25 20:33:24作者: CloudWk

一、引入

​ 在Python中有很多不常见内置函数,内置语法,为了方便查阅使用。现在将它们进行归纳。

二、内置函数

# abs(): 返回数字的绝对值
abs(-7) #>>> 7

# all():如果参数里的可迭代对象中所有值都是True ,则返回 True。空值为False
all(['1','',1]) #>>> False

# any(): 如果可迭代对象中的任意一个值为 True,则此函数返回 True。
all(['1','','','']) #>>> True

# bool(): 将值转换为布尔值
bool(0.3) #>>> True

# delattr(): 用于删除类的属性。
delattr('类名', '属性名') # 删除类的属性

# dir():返回对象的全部方法(非常有用,返回前面的为魔术方法)
dir([]) #>>>'__add__'····,append','clear','copy','count'·······

# enumerate(): 组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
for i, j in enumerate(['a','b','c']):
    print(i,j) #>>>i:索引,j:遍历的值
    
# eval(): 用来执行一个字符串表达式,并返回表达式的值
eval('5+7') #>>> 12

# exec(): 动态运行 Python 代码。
exec('a=2;b=3;print(a+b)') #>>>5

# filter(): 过滤出结果为True的值
filter('函数和条件', '等待过滤的值')
list(filter(lambda x: x>5,[1,23,3,4,5])) # >>> [23]
'''
lambda不需要return语句返回值
记得一定要使用list,tuple,set转换出过滤的值,不然只会输出:<filter at 0x1ff4af39280>
'''
# globals(): 以字典类型返回当前位置的全部全局变量,里面不需要参数。
globals()

# help(): 较常用,可以查询方法英文文档
help(max) 

# locals(): 以字典类型返回当前位置的全部局部变量。函数内配合return locals()非常好用
def test():
    a = 1,b = 1
    return locals()

# map(): 非常好用,简单来说就是map第一个参数为函数或者内置函数,将函数的方法全部运用到第二个参数里面,返回迭代器
#自定义一个函数a,返回x*2的值
def a(x):
    return x*2
#定义列表
list1 = [1,3,5]
#对列表中的每个数运用函数a,返回迭代器
list2=map(a,lis1)
for i in list2:
    print(i) #>>>2,6,10

# round(): 将浮点数舍入到给定的位数。
round(3.777,2) #>>>3.78

# zip(): 可迭代对象,可以是列表、元组等.可以将两个交叉组合在一起。
keys = ["name", "age", "city"]
values = ["Alice", 30, "New York"]
result = dict(zip(keys, values)) # 使用zip函数之后可以用list、set、tuple等转换。
print(result) #>>>{'name': 'Alice', 'age': 30, 'city': 'New York'}

# isinstance(): 较常使用,不但能比较类型还能比较是否是类的实例
class A:
    pass

a = A()
print(isinstance(a, A)) # 判断是否为A类的实例
print(isinstance(a, tuple)) # 判断类型是否为tuple
print(isinstance(a, (tuple, list , set))) # 判断是否为tuple或list或set

三、内置语法

3.1 assert语句
try:
    i = 4
    assert i > 5,'判断错误' # 条件为True就往下执行,False就抛出条件后面的错误提示
    print('1')
except AssertionError as ae: # 默认抛出AssertionError:
    print('发现错误:', ae) #>>> 发现错误: 判断错误
3.2 raise语句
a = 1
if a == 1:
    raise ValueError('判断错误')
    '''
    除了ValueError很多种错误方式可以自己写,括号里面甲乙加上提示中英文
    未定义:NameError
    语法错误:SyntaxError(缩进、中文引号等等)
    类型错误:TypeError
    '''
3.3 循环
continue # 跳过此次循环
break # 结束整个循环
3.4 作用域
# global 声明函数内的x为全局变量--------------------------------------------------
x = 5 # 使用global必须事先要有全局变量
def foo():
    global x # 全局变量
    x += 1 # 没有global,原式为x = x + 1会报错,因为没有赋初始值
    print(x) #>>>6
foo()
print(x) # >>>6 使用global这里才能访问到foo函数里面改变的x变量。
'''
6
6
'''

# nonlocal 声明局部变量(一般用在嵌套函数里面使用)-----------------------------------
# (1)这种执行会错误,原因是在indef()里print后面定义了name变量和上面的name变量冲突
def outdef ():
    name = "所在函数中定义的 name 变量"
    #局部函数
    def indef():
        print(name)
        name = "局部函数中定义的 name 变量" #
    indef()
#调用外层函数
outdef()
# (2)改成这种就行了
'''
nonlocal声明使用的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
'''
#全局函数
def outdef ():
    name = "所在函数中定义的 name 变量"
    #局部函数
    def indef():
        nonlocal name # 表明使用外层的局部变量
        print(name)
        #修改name变量的值
        name = "局部函数中定义的 name 变量"
    indef()
#调用全局函数
outdef()

global使用原则:

  • 外部作用域变量会在内部作用域可见,但也不要在这个内部的局部作用域中直接使用,因为函数的目的就是为了封装,尽量与外界隔离
  • 如果函数需要使用外部全局变量,请尽量使用函数的形参定义,并在调用传实参解决
  • 一句话: 不用global 。学习它就是为了深入理解变量作用域