python 14 days
python之内置函数,匿名函数
内置函数:
1.1作用域相关
locals :函数会以字典的类型返回当前位置的全部局部变量。
globals:函数以字典的类型返回全部全局变量。
q = 666
def wrapper(argv):
a = 3
print(locals()) # 1 {a:3,argv:2}
def inner(argv1):
b = 4
c = 5
print(locals()) # 2 {b:4 c:5,argv1:6}
inner(6)
#
wrapper(2)
print(globals()) # 3
{'a': 3, 'argv': 2}
{'c': 5, 'b': 4, 'argv1': 6}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader....
这两个一样,因为是在全局执行的。
a = 1
b = 2
print(locals())
print(globals())
这两个不一样,locals() {'argv': 3, 'c': 2}
def func(argv):
c = 2
print(locals())
print(globals())
func(3)
1.2其他相关
1.2.1 字符串类型代码的执行 eval,exec,complie
eval:去除字符串的引号,返回对应内部的值
s = '{"a":1,"b":3}'
dic = eval(s)
print(dic,type(dic))
print(eval('2 + 2'))
print(eval('print(666)'))
{'a': 1, 'b': 3} <class 'dict'>
4
666
None
exec:执行字符串内部的代码
print(exec('1 + 1'))
None
ret = '''
name = input('请输入名字:').strip()
if name == 'alex':
print(666)
'''
exec(ret)
请输入名字:alex
666
compile:将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
compile:pass
1.2.2输入输出相关:input, print
input:
name = input('请%s输入名字:' % 'alex')
print(name)
请alex输入名字:alex
alex
print:
print(1, 2, 3,sep='*') # 设定打印元素的连接方式
print('alex', end='') # end控制的是换行
print('老男孩')
1*2*3
alex老男孩
print的操作文件句柄,写入文件
f1 = open('log', encoding='utf-8', mode='w')
print('666', file=f1) # file 操作文件句柄,写入文件。
f1.close()
666
1.2.3内存相关 hash id
hash 将不可变的数据通过hash算法转化成hash值
hash:
rint(hash('name'))
print(hash('age'))
print(hash((1, 2, 3,)))
print(hash(1))
print(hash(1))
print(hash(100))
-213739849721140791
2048003905372590584
2528502973977326415
1
1
100
id :
print(id('name'))
1997741681552
1.2.3文件操作相关
open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
1.2.4模块相关__import__
__import__:函数用于动态加载类和函数 。
1.2.5 帮助
help:函数用于查看函数或模块用途的详细说明。
print(help(str))
1.2.6调用相关
callable:函数用于检查一个对象是否是可调用的。
如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1():
print(666)
age = 16
print(callable('name'))
print(callable(age))
print(callable(func1))
False
False
True
1.2.7查看内置属性
dir:函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;
带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
print(dir(str))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',.................
1.3 迭代器生成器相关
l = [1, 2, 3, 4, 5]
l_obj = l.__iter__()
l_obj = iter(l)
print(l_obj)
print(l_obj.__next__())
print(next(l_obj))
<list_iterator object at 0x0000022A11BCC6A0>
1
2
1.4.1数字相关
数据类型(4):
bool :用于将给定参数转换为布尔类型,如果没有参数,返回 False。
int:函数用于将一个字符串或数字转换为整型。
print(int(1.234))
print(int(1.768))
123
1
1
float:函数用于将整数和字符串转换成浮点数。
complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。
如果第一个参数为字符串,则不需要指定第二个参数。。
i = 3.1415
print(i, type(i))
s = '1.234'
print(int(1.234))
print(float(s))
print(float(100))
3.1415 <class 'float'>
1
1.234
100.0
bin:将十进制转换成二进制并返回。
print(bin(100))
oct:将十进制转化成八进制字符串并返回。
print(oct(10))
hex:将十进制转化成十六进制字符串并返回。
print(hex(13))
print(hex(18))
数学运算
abs:函数返回数字的绝对值。
print(abs(-5))
5
divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。
print(divmod(7, 3))
(2, 1)
round:保留浮点数的小数位数,默认保留整数。
print(round(1.234,2))
1.23
pow:求x**y次幂。(三个参数为x**y的结果对z取余)
print(pow(2, 3)) # 2的三次幂
8
print(pow(2, 3, 3)) # 2的三次幂对3取余数
2
sum:对可迭代对象进行求和计算(可设置初始值)。
print(sum([1, 2, 3, 4]))
print(sum([1, 2, 3, 4], 100))
10
110
min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。
print(min([1, 3, 5, 7, -4]))
print(min([1, 3, 5, 7, -4], key=abs))
-4
1