美文网首页
06-Python之路-进阶-函数进阶

06-Python之路-进阶-函数进阶

作者: 程序记录日志 | 来源:发表于2022-04-25 22:15 被阅读0次

    函数和返回值

    作用

    • 函数根据有没有参数以及有没有返回值,可以相互组合,一个四种组合形式:(无参数、无返回值),(有参数、有返回值),(有参数、无返回值),(有参数、有返回值)
    • 定义函数时,是否接收参数,或者是否返回结果,是根据实际功能需求决定的
    • 如果函数内部处理的数据不确定,可以接收外部数据以参数形式传递到函数内部
    • 如果希望一个函数执行完,向外界发送结果,可以增加返回值

    不可变和可变参数

    • 无论传递的参数是可变还是不可变只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用。如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部数据

    缺省参数

    • 定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数,调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定参数的默认值。将常用的参数设置缺省值,从而简化函数的调用

    注意事项

    定义

    • 必须保证带有默认值的缺省参数在参数列表末尾

    调用带有多个缺省参数的函数

    • 在调用函数时,如果有多个缺省参数,就需要指定参数名

    多值参数

    定义

    • 一个函数能够处理的参数个数是不确定的,这时候就可以使用多值参数

    多值参数

    • 参数名前增加一个*可以接受元组
    • 参数名前增加两个*可以接受字典

    多值参数习惯名字

    • *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发起调用。

    相关文章

      网友评论

          本文标题:06-Python之路-进阶-函数进阶

          本文链接:https://www.haomeiwen.com/subject/yjvqyrtx.html