zoukankan      html  css  js  c++  java
  • python-函数

    一、函数

      定义:函数是将一组语句的集合通过一个名字(函数名)封装起来,要执行这个函数,只需要调用函数名即可

      特性

       1.减少重读代码

       2.可扩展性

       3.使得程序变得易维护

    1 def f():
    2     if ......:
    3 f()#调用函数
    4 def sayHI(name,age):
    5     print('hello:%s'%name,age)
    6 sayHI('songxiaonan',22)

          函数的参数: 默认参数 所有的默认参数必须写在位置参数后面

                关键参数   指定参数名 进行赋值
         非固定参数 *args 以元组的形式传入数据
                              **kwargs        以字典的形式传入数据

    def test(name,age,address,id,*args,**kwargs,salary=1):
        print('用户信息:%s,%s,%s,%s,%s'%(name,address,age,salary,id))
        print('加入的其他参数:',args)
        print('加入的其他参数:', kwargs)
    test('song','xiao','nan',100,'book','1',book='追风筝的人',sel=200)
    局部变量:只在函数内部生效
    全局变量:一般定义在文件开头 局部变量和全部变量不冲突,如果重名,函数中想要修改全局变量,需要:global 变量名 变量名=值
    name='songxiaonna'
    def f():
        global name
        name='00000000'
        print(name)4
    f()
    print(name)
    返回值 :1、一旦函数经过调用并开始执行,外部的程序就没有办法再控制函数的执行过程,此时只能等待函数的执行结果,外部程序要根据函数的执行结果来决定下一步怎
    怎么走,所以,执行结果就是以return的形式返回给外部程序
    2、return代表着一个函数的结束
    3、返回值可以返回任意数据类型
    4、对于用户角度,函数可以返回任意数量的值,但是对于python,函数只能返回一个值
    二:递归函数
    一个函数在内部调用自己,这个函数就是递归函数
    def fun(n):
        print('haha---------haha',n+1)
        fun(n+1)
    fun(0)
    
    def calc(n):
        if n//2>0:
            calc(n//2)
        print(n)
    calc(10)

      递归特性:

        1. 必须有一个明确的结束条件

        2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

        3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

    三、匿名函数  lambda
      无参数 fun=lambda :true
    带参数:fun=lambda x,y:x+y
    name='songxiaonan'
    def upper(data):
        Name=data.upper()
        return Name
    for i in map(upper,name):#前年是函数名  注意:不用加上(),后面是被函数的对象
        print(i)
    #以上的代码,可以用匿名函数:
    name='songxiaonan'
    map(lambda data:data.upper(),name)
    for i in map(lambda data:data.upper(),name):
        print(i)
    
    
        
    四、内置函数
    a=abs(-9)#求绝对值
    all(['1',0])#元组、列表、字符串等集合中均为true的时候返回true,为空时,返回true
    any()#元组、列表、字符串等集合中一个元素为true返回true,为空时,返回false
    cmp(1,2)#比较xy的大小,x>y返回1,相等返回0,x<y返回-1
    map(function,iterable)#遍历每个元素,执行function操作,并返回一个列表
    filter(function,iterable)#遍历每个元素,执行function操作,并返回该funtion返回真值时的所有项,过滤函数返回假值的所有项
    chr(67)#返回序号67在ascii表中对应的字符
    ord()#返回指定字符串对应的ascii码或者unicode值
    print(ord('o'))
    print(ord(u'a'))
    a=bin(10)#将10转换为二进制字符
    b=oct(10)#将10转换为八进制字符
    c=hex(10)#将10转换为十六进制字符
    bool(['x'])#将内容转换为布尔类型
    bytearray()#返回一个byte数组
    float(99)#将一个数或者字符串转换为浮点数,如果没有参数则返回0.0
    int(2.9)#将数字或者字符串转换成一个整数   结果为2
    callable(a)#测试对象是否可调用,可调用对象包括:函数、方法、代码对象、类、已经定义了调用方法的类
    #print()
    meg='灰太狼'
    f=open('new','w',encoding='utf-8')
    print(meg,'喜洋洋',sep='*',end='~',file=f)#输入结果:灰太狼*喜洋洋~ ,并将该输出写入到文件new中
    complex()#把字符串或数字转换为复数。
    getattr()
    #delattr()#这个函数和setattr()有关。参数是一个对象和一个字符串。字符串必须是对象的某个属性的名字。只要对象允许,这个函数删除该名字对应的属性
    # hasattr()
    # dict()#创建字典
    #list('song xiao')#将对象转换为列表['s', 'o', 'n', 'g', ' ', 'x', 'i', 'a', 'o']
    #tuple('song xiao ')#将对象转换为元组,结果为('s', 'o', 'n', 'g', ' ', 'x', 'i', 'a', 'o', ' ')
    # dir():以列表的方式返回对象所有的方法
    # print(divmod(13,4))#完成除法运算,返回商和余(3,1)
    #pow(2,4)#2的4次幂
    #round(2.3)#四舍五入
    # enumerate()打印序号
    # eval()将字符串转为字典
    # exec()执行字符串格式额代码
    # float()
    # format()字符串格式化
    # frozenset()冻结集合,即将集合变成只读的
    # print(globals())将当前程序在内存里的所有数据以字典的形式打印出来,只打印全局变量
    # hash()
    # isinstance(a,str)#测试对象类型,测试a是否是str
    # issubclass()
    # iter()
    # print(locals())#只能放在函数里面,打印局部数
    # max()求最大值
    #min(1,22,3)#返回指定参数的最小值
    # sum([1,2])#对列表求和
    # memoryview
    # next()
    # object()
    property
    repr()
    reversed()#反转
        data=[1,2,3,4]
        data2=reversed(data)
        for i in data2:
            print(i)#输出:4321
        str='abc'
        str2=reversed(str)
        for i in str2:print(i)#输出:cba
    set()
    setattr()
    slice
    sorted()
        name='song'
        print(sorted(name))
    staticmethod
    str('fcdv')#将对象转换成可打印的字符串
    super()
    vars()打印当前内存总所有地址
    # zip()
    a=[1,2,3,4]
    b=['a','b','c','d','e']
    for i in zip(a,b):
        print(i)
     #输出结果:  (1, 'a')
                # (2, 'b')
                # (3, 'c')
                # (4, 'd')


































  • 相关阅读:
    【Docker】(6)---Dockerfile文件
    【Docker】(5)---springCloud注册中心打包Docker镜像
    【Docker】(4)搭建私有镜像仓库
    【Docker】(3)---linux部署Docker及Docker常用命令
    【Docker】(2)---仓库、镜像、容器
    【Docker】(1)---Docker入门篇
    【Maven】---Nexus私服配置Setting和Pom
    【Maven】---Linux搭建Nexus3.X私服
    【Maven】---坐标与依赖
    go语言path包和filepath包的学习与使用
  • 原文地址:https://www.cnblogs.com/songxiaonan/p/6031851.html
Copyright © 2011-2022 走看看