函数和返回值
作用
- 函数根据有没有参数以及有没有返回值,可以相互组合,一个四种组合形式:(无参数、无返回值),(有参数、有返回值),(有参数、无返回值),(有参数、有返回值)。
- 定义函数时,是否接收参数,或者是否返回结果,是根据实际功能需求决定的
- 如果函数内部处理的数据不确定,可以接收外部数据以参数形式传递到函数内部
- 如果希望一个函数执行完,向外界发送结果,可以增加返回值
不可变和可变参数
- 无论传递的参数是可变还是不可变只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用。如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部数据
缺省参数
- 定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数,调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定参数的默认值。将常用的参数设置缺省值,从而简化函数的调用
注意事项
定义
- 必须保证带有默认值的缺省参数在参数列表末尾
调用带有多个缺省参数的函数
- 在调用函数时,如果有多个缺省参数,就需要指定参数名
多值参数
定义
- 一个函数能够处理的参数个数是不确定的,这时候就可以使用多值参数
多值参数
- 参数名前增加一个
*
可以接受元组 - 参数名前增加两个
*
可以接受字典
多值参数习惯名字
-
*args
存放元组参数, -
**kwargs
存放字典参数 - args是arguments缩写,有变量的含义,kw是keyword的缩写,kwargs可以记忆键值对参数
字典和元组的拆包
- 在调用带有多值参数的函数时,如果希望将一个元组变量,直接传递给args将一个字典变量,直接传递给kwargs就可以使用拆包,简化参数的传递。
- 拆包方式是:在元组变量前,增加一个
*
在。字典变量前,增加两个*
。
递归
- 函数调用自身的编程技巧称之为递归
- 一个函数内部调用自己。函数内部可以调用其他函数,也可以在函数内部调用自己
代码特点
- 函数内部的代码是相同的,只是针对参数不同,处理结果不同
- 当参数满足一个条件时,函数不再执行
内置函数(Python 3.10.4)
- abs(x):返回一个数的绝对值。参数可以是整数、浮点数或任何实现了abs()的对象。如果参数是一个复数,则返回它的摸
- aiter(async_iterable):返回asynchronous的asynchronous iterator。相当于调用
x.__aiter__()
- all(iterable):如果iterable的所有元素均为真值(或可迭代对象为空),则返回True
- any(iterable):如果iterable的任意元素为真值,则返回True。如果可迭代对象为空,则返回False
- ascii(object):与repr()类似,返回一个字符串表示对象的可打印形式,但在repr()返回的字符串中,非ASCII字符会用\X、\u、\U进行转义
- bin(x):将整数变为以"0b"前最的二进制字符串,如果不是int对象,必须定义index()方法
- class bool([x]):返回布尔值,True或者Flash
- breakpoint(*args,**kws):该函数会在调用时将你陷入调试器中
- class bytearray([source[,encoding[,errors]]]):返回一个新的bytes数组。bytearray类是一个可变序列,包含范围为0 <= x < 256 的整数
- class bytes([source[,encoding[,errors]]]):返回一个新的bytes对象,这是一个不可变序列,包含范围0 <= x < 256的整数
- callable(object):如果参数object是可调用的就返回True,否则返回False。
- chr(i):返回Ubicode码位为整数i的字符的字符串格式
- @classmethod:把一个方法封装成类方法
- compile(source,filename,mode,flags=0,dont_inherit=False,optimize=-1):将source编译成代码或AST对象,filename实参需要是代码读取的文件名,mode实参指定了编译代码必须用的模式,可选参数flags和dont_inherit控制应激活哪个funture特性,optimize实参指定编译器的优化级别,默认值-1选择与解释器的-0选项相同的优化级别
- class complex([real[,imag]]):返回值为real+imag*1j的复数,或将字符串或数字转换为复数
- delattr(object,name):setattr()相关的函数。实参是一个对象和一个字符串
- class dict(**kwarg):创建一个新的字典,dict对象是一个字典类
- dir([object]):如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表
- divmod(a,b):以两个(非复数)数字为参数,在做整数除法时,返回商和余数
- enumerate(iterable,start=0):返回一个枚举对象。iterable必须是一个序列,或iterator,或其他支持迭代的对象
- eval(expression[,globals[,locals]]):实参是一个字符串,以及可选的globals和locals.globals实参必须是一个字典。locals可以是任何映射对象
- exec(object[,global[,locals]]):如果省略了可选部分,代码将运行于当前作用域中。如果只提供globals,则必须为字典对象(而不能是字典的子类),同时用于存放全局和局部变量。如果提供globals和locals,则将分别用于全局变量和局部变量。locals可以是任意字典映射对象
- filter(function,iterable):用iterable中函数function返回元素,构建一个新的迭代器
- class float([x]):返回从数字或字符串x生成的浮点数
- format(value[,format_spec]):将value转换为格式化后的形式,格式由format_spec进行控制
- class frozenset([iterable]):返回一个新的frozenset对象,它包含可选参数iterable中的元素
- getattr(object,name[,default]):返回对象命名属性的值。name必须是字符串如果该字符串是对象的属性之一,则返回该属性的值
- globals():返回实现当前命名空间的字典
- hasattr(object,name):该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回True,否则返回False
- hash(object):返回该对象的哈希值(如果存在)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键
- help([object]):启动内置的帮助系统(此函数主要在交互式使用)
- hex(x):将整数转换为以“0x”为前缀的小写十六进制字符串。如果不是int对象,则必须定义返回整数的index()方法
- id(object):返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命周期不重叠的对象可能具备相同的id()值
- input([prompt]):如果存在prompt实参,则将其写入标准输出,末尾不带换行符
- class int([x,base=10]):返回一个基于数字或字符串x构造的整数对象,或者在未给出参数时返回0
- isinstance(object,classinfo):如果object参数是classinfo参数的实例,或其(直接、间接或virtual)子类的实例,则返回True.如果object不是给定类型的对象,则返回False
- issubclass(class,classinfo):如果class是classinfo的子类,则返回True
- iter(object[,sentinel]):返回一个迭代器对象
- len(s):返回对象的长度(元素个数)
- class list([iterable]):list是一种可变序列类型
- locals():更新并返回表示当前本地符号表的字典
- map(function,iterable,...):返回一个将function应用于iterable中每一项并输出其结果的迭代器
- max(iterable,*[,key,default]):返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的
- min(iterable,*[,key,default]):返回可迭代对象中最小的元素,或者返回两个及以上实参最小的
- next(iterator[,default]):通过调用其next()方法从迭代器中检索下一项
- class object():返回一个不带特征的新对象。ibject是所有类的基类
- oct(x):将一个整数转变成一个前缀为“0o”的八进制字符串
- open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None):打开file并返回对应的file object
- ord(c):对表示单个Unicode字符的字符串,返回代表它 Unicode码点的整数
- pow(base,exp[,mod]):返回base的exp次幂,如果mod存在,则返回base的exp次幂对mod取余
- print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False):将object打印输出至file指定的文本流
- class property(fget=None,fset=None,fdel=None,doc=None):返回property的属性。fget是获取属性值的函数。fset是用于设置属性值的函数。fdel是用于删除属性值的函数。并且doc为属性对象创建文档字符串
- class range(start,stop[,step]):range是一个不可变的序列类型
- repr(object):返回对象可打印形式的字符串
- reversed(seq):返回一个反向的iterator
- round(number[,ndigits]):返回number舍入到小数点后ndigits为精度的值
- class set([iterable]):返回一个新的set对象,可以选择带有从iterable获取的元素
- setattr(object,name,value):函数与getattr()相对应。其参数为一个对象、一个字符串和一个任意值
- class slice(start,stop[,step]):返回一个slice对象,代表由range(start,stop,step)指定索引值的切片。其中参数start和step默认值为None
- sorted(oterable,/,*,key=None,reverse=False):根据iterable中的项返回一个新的已排序列表
- @staticmethod:将方法转换为静态方法
- class str(object=b' ',ending='utf-8',errors='strict'):返回一个字符串
- sum(iterable,/,start=0):从start开始自左向右对iterable的项求和并返回总计值。iterable的项通常为数字,而start值则不允许为字符串
- class **super([type[,object-or-type]]):返回一个代理对象,它会将方法调用委托给type的父类或兄弟类
- class tuple([iterable]):tuple是一个不可变的序列类型
- class type(name,bases,dict,**kwds):传入一个参数时,返回object的类型。返回值是一个type对象,通常与object.class所返回的对象相同
- vars([object]):返回模块、类、实例或任何其他具有dict对象的属性
- zip(*iterables,strict=False):在多个迭代器上并行迭代,从每个迭代器返回一个数据项组成的元组
- import(name,globals=None,locals=None,fromlist=(),level=0):此函数由import发起调用。
网友评论