标签:map psd wip ttl pex 列表 去除 svg 整数
1、函数
Python中函数必须先声明,然后才能调用它
Python使用def声明一个函数,完整函数由函数名、函数参数及函数体组成
def <函数名> (参数列表)
<函数语句>
return <返回值>
参数列表、返回值都不是必须的,return后无返回值的和无return语句的函数都会返回None
默认值参数
def <函数名>(参数 = 默认值):
<语句>
若果既有无默认值参数,又有默认值参数,则必须先声明无默认值参数
命名(关键字)参数
Python中参数传递默认是按照声明函数时参数的位置顺序进行传递的,即位置参数
调用函数时可明确声明要传递的参数的名称即可
调用方法时,按顺序传递的参数要位于命名参数之前,且不能有重复的情况
可变参数传递
在自定义函数时,如果在参数名前加一个*,则表示该参数就是一个可变长参数。在调用该函数时,若果依次将其他所有变量都赋值之后,剩下的参数将会收集在一个元组中,元组的名称就是前面带*的参数名
可变参数名不能作为命名参数传递参数
可变参数传递
如果要传递不定量的命名参数,就可在参数名前加**,这样一来,多余的命名参数就可以以字典的方式收集到变量之中
拆解序列的函数调用
调用函数时还可以把元组和字典拆解调用
#拆解元组:提供位置参数
#拆解字典:提供关键字参数
调用时使用拆解元组的方法是在调用时提供的参数前加一个*:要拆解字典必须在提供的调用参数前加两个*即**
def mysum(a, b):
return a+b
print(mysum(*(3, 4)))
print(mysum(**(‘a‘:3, ‘b‘: 4))) #好像必须为字符,若为a:3则会报错
函数调用时参数的传递方法(类似值与引用)
Python中的类型如整数、浮点数、字符串、元组等都属于不可变类型,而列表和字典属于可变的
不可变类型如整型等改变其值实际上是在内存中重新创建一个整数值,然后将变量引用与其绑定
在函数调用时,若提供的是不可变参数,name在函数内部对其修改时,在函数外部其值是不变的;若提供的是可变参数,则在函数内部对其修改时,函数外部值也会改变
陷阱
def myfun(lst=[]):
lst.append(‘abc‘)
print(lst)
myfun()
myfun()
myfun()
三次调用后变为[‘abc‘, ‘abc‘, ‘abc‘] #不理解原理,做了个试验在Python函数中的列表重入
应改为
def myfun(lst = None):
lst = [] if list is None else lst
lst.append(‘abc‘)
print(lst)
myfun()
myfun()
myfun()
2、匿名函数(lambda)
lambda params:expr
#params为函数参数,expr为函数要返回值的表达式。表达式中不能再包含其他语句,也可以返回元组(要用括号),还允许在表达式中调用其他函数
3、Python常用內建函数
help(obj) #显示对象的帮助信息,例help(abs)
bin(aint) #十进制数转换为二进制数的字符串形式
hex(aint) #十进制数转换为十六进制数的字符串形式
oct(aint) #十进制数转换为八进制数的字符串形式
callable(obj) #测试对象是否可调用(函数)
chr(aint) #ASCII码转字符
ord(char) #字符转ASCII码
filter(fun,seq) #对序列中的数据用函数过滤
例:list(filter(lambda x:x % 2 == 1,alst)),去除列表中的偶数
#fun 过滤函数,将返回True的元素加入新列表
#列表 待过滤列表
map(fun,seq) #对序列中的数据逐个变换
例:list(map(lambda x:2*x, alst)),将列表中元素都扩大为原来的两倍
#fun 处理元素的函数
#seq 待处理的列表
isinstance(obj.typestr) #测试对象是否为某类型
4、变量作用域
#内置作用域:Python预先定义的
#全局作用域:所编写的整个程序
#局部作用域:某个函数内部范围
使函数内部变量成为全局变量(global声明)
以上代码上下两节调换也可运行,不过global并未作用,函数内a变为局部变量
函数内若无与全局变量相同的变量,则可引用全局变量,若有,则在整个函数内部隐藏全局变量,即不可在定义本函数同名变量前使用同名全局变量
标签:map psd wip ttl pex 列表 去除 svg 整数
原文地址:https://www.cnblogs.com/chenxingyang/p/8820902.html