python 函数,内置函数
1.函数
1.1 定义函数
·函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
·任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
·函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
·函数内容以冒号起始,并且缩进。
·return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
1.2 函数参数
【python 传参 传递的是一个引用】
·普通参数
def userinfo(name,userid): print(name,userid) userinfo('xx',20) #xx 20
·默认参数(默认参数必须放在参数列表最后)
def userinfo(name,userid,status='ok'):
print(name,userid,status)
userinfo('xx',20)
userinfo('xx',20,'error')
#xx 20 ok
#xx 20 error
·动态参数 * 默认将传入的元素,全部放在元祖中 ** 默认将传入的元素,全部放到字典里
def userinfo(*args): #参数是元祖或者列表 print(args) l_list = [1,2,3] userinfo(l_list) userinfo(*l_list) #([1, 2, 3],) #(1, 2, 3)
def userinfo(**args): #参数为字典 print(args) dic = {"name":'xx',"age":20} userinfo(name='xx') userinfo(**dic) userinfo(name='xx',age=30) #{'name': 'xx'} #{'age': 20, 'name': 'xx'} #{'age': 30, 'name': 'xx'}
def userinfo(*args,**kwargs): #万能参数 print(args,kwargs) dic = {"name":'xx',"age":20} l_list = [1,2,3] userinfo(*l_list,**dic) #(1, 2, 3) {'name': 'xx', 'age': 20}
1.3 变量作用域
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加 。
想要改变函数外的全局变量,需要加global参数。
AGE =20 def userinfo(): AGE = 18 print(AGE) userinfo() print(AGE) #18 #20
AGE =20 def userinfo(): global AGE #改变全局变量 AGE = 18 print(AGE) userinfo() print(AGE) #18 #18
虽然函数内不能改变全局变量的值,但是假如变量为列表、字典等,可以修改元素,但是不能删除重建
Info = [1,2] dict_info = { "age":18, "name":"caesary", } def testfun(): Info.append(3) dict_info["addr"] = "HLJ" print(Info) print(dict_info) testfun() print(Info) print(dict_info) #[1, 2, 3] #{'age': 18, 'name': 'caesary', 'addr': 'HLJ'} #[1, 2, 3] #{'age': 18, 'name': 'caesary', 'addr': 'HLJ'}
2.内置函数
abs() 函数返回(数字)的绝对值
all() 如果()里的所有元素不为0、''、False,all()返回True,否则返回False
>>> all(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0 True >>> all(['a', 'b', '', 'd']) #列表list,存在一个为空的元素 False >>> all([0, 1,2, 3]) #列表list,存在一个为0的元素 False >>> all(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或0 True >>> all(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素 False >>> all((0, 1,2, 3)) #元组tuple,存在一个为0的元素 False >>> all([]) # 空列表 True >>> all(()) # 空元组 True
any() 如果()里的任何元素不为0、''、False,any()返回True。如果iterable为空,返回False
>>> any(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0 True >>> any(['a', 'b', '', 'd']) #列表list,存在一个为空的元素 True >>> any([0, '', False]) #列表list,元素全为0,'',false False >>> any(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或0 True >>> any(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素 True >>> any((0, '', False)) #元组tuple,元素全为0,'',false False >>> any([]) # 空列表 False >>> any(()) # 空元组 False
bin() 十进制转二进制
oct() 十进制转八进制
hex() 十进制转十六进制
print(bin(10),oct(10),hex(10)) #0b1010 0o12 0xa
bytes(字符串,编码格式)
一个字节8位
utf-8 一个汉字3个字节
gbk 一个汉字2个字节
n = '测试' m = bytes(n,encoding="utf-8") m1 = bytes(n,encoding="gbk") print(m,m1) print(str(bytes(n,encoding="utf-8"),encoding="utf-8")) #字节转化成字符串 #b'\xe6\xb5\x8b\xe8\xaf\x95' b'\xb2\xe2\xca\xd4' #测试
format() 格式化输出
s1 = 'i am {0},age {1}'.format('xx',20) print(s1) s2 = 'i am {0},age {1}'.format(*['xx',21]) print(s2) s3 = 'i am {name},age {age}'.format(name='xx',age=22) print(s3) dic = {'name':'xx','age':23} s4 = 'i am {name},age {age}'.format(**dic) print(s4) #i am xx,age 20 #i am xx,age 21 #i am xx,age 22 #i am xx,age 23