zoukankan      html  css  js  c++  java
  • python3基础笔记(三):函数

    一、python中函数的定义:

    定义函数使用def关键字,后面是函数名,函数名不能重复。

    其中AB是行参,形参只在函数内部有效,调用函数时传的参数lily和lucy是实参。

    def name(A,B=2233):#定义一个函数
          print("Hi")#函数体 
    name(liliy,lucy)

    二、函数的四种参数类型:

    函数中定义四种参数的顺序:位置参数、默认参数,可变参数、关键字参数

    位置参数:

    位置参数是按照参数的位置来进行传参,A就是位置参数,位置参数是必传的。

    位置参数调用时也可以通过指定名字调用,例如A=lily

    默认参数:

    默认参数是在定义形参的时候,给函数默认赋一个值,B就是默认参数

    以后在调用的时候若是没传入这个参数,它就使用默认的值,若是给默认参数传值的话,它就会使用传入的值。

    默认值参数必须放在位置参数后面定义。默认参数是非必传的,

    可变参数:

    可变参数也叫参数组,非必传,是用*来接收的,它不限时参数的个数,传几个都可以,会把参数放到一个元祖里。

    def send_sms(*args):
        print('phones',args)
    send_sms(110,123) #展示的是元祖

    关键字参数:

    关键字参数是用**来接收的,非必传,同样不限参数的个数,调用的时候必须使用关键字传参,否则会报错。

    1 def kwfunc(**kwargs):
    2     print(kwargs)
    3 kwfunc() #展示的是字典
    4 kwfunc(age=123,name='haha')

    三、函数在调用时有一种拆包的方式

    当调用时的实参与行参都是一一对应的时候,定义的参数放到list里可以通过*调用,放到字典里可以通过**幸好调用

     1 def redis(ip,pwd,port=6379):
     2     print('连接redis')
     3     print(ip)
     4     print(pwd)
     5     print(port)
     6     print('='*10)
     7  redis_info = ['127.0.0.1','123456',6378]#list
     8 # redis(redis_info[0],redis_info[1],redis_info[2])
     9  redis(*redis_info) #这种方式叫拆包,这么写同上一步一个意思
    10 
    11 redis_info2={'ip':'127.0.0.1','pwd':'123456','port':1111} #字典
    12 #redis(redis_info2['ip'],redis_info2['pwd'],redis_info2['port'])
    13 redis(**redis_info2) #同上一步一个意思

    四、内置函数

     1 l='fsdwerabc94'
     2 sorted(l) #排序
     3 print(sorted(l)) #排序
     4 print(all([1,2,3,4,'']))#如果list里面都为真的就返回true
     5 print(any([0,0,0,1]))#判断可迭代的对象里面的值是否有一个为真
     6 print(bin(10))#十进制转二进制
     7 print(bool(0))#把一个对象转换成布尔类型
     8 print(chr(66))#打印数字对应的ascii
     9 print(ord('B'))#打印字符串对应的ascii码
    10 print(dict(a=1,b=2))#转换字典
    11 s='a'
    12 print(dir(s))#打印传入对象的可调用方法
    13 print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算
    14 print(exec('def a():pass'))#执行python代码
    15 print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选,过滤数据
    16 print(map(lambda x:x>5,[1,2,3,4,5,6]))#调用函数的方法,每次的返回值都会保留
    17 print(max([12,3,4,5]))#取最大值
    18 print(min([12,3,4,5]))#取最小值
    19 print(oct(9))#把数字转换成8进制
    20 print(round(3.1415926,3))#取几位小数
    21 zip() #同时循环多个list时用zip传

     五、递归函数

    递归就是函数自己调用自己,说白了呢就是循环,递归最多循环999次,写个小例子

    def func():
        num = int(input('num:'))
        if num % 2 ==0:
            print('是偶数')
            return
        else:
            func() #不是偶数继续执行
    
    func()#递归最多循环 999次

    六、匿名函数

    写简单函数的时候不需要定义函数,可以直接用匿名函数,匿名函数使用后就不在了,不会占用内存。

    匿名函数用lambda,格式:lambda x:x+1 ,冒号前面的是入参,后面的是返回值

    lambda x:x+1 等同于下面2行代码:

    def f(x)

         return x+1

    写一个小例子:

    result=list(map(lambda x:str(x).zfill(2),range(1,30)))
    print(result)
    
    结果:
    ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20',
    '21', '22', '23', '24', '25', '26', '27', '28', '29']

    七、enumerate()函数

    enumerate()函数能同时获取到list中的下标和元素。

    enumerate(l,1)这样表示下标从1开始

    例子:

    l=['id', 'name', 'sex', 'age', 'addr', 'grade', 'phone', 'gold']
    for index,value in enumerate(l):
        print('%s=>%s ' %(index,value))
    
    结果:
    0=>id 
    1=>name 
    2=>sex 
    3=>age 
    4=>addr 
    5=>grade 
    6=>phone 
    7=>gold 
  • 相关阅读:
    javascript编程解决黑化的牛牛问题
    Eclipse中给jar包导入JavaDoc注释文档的方法
    Android网络连接处理学习笔记
    Android Animation学习笔记
    Android中动画学习
    Android 动画效果 --Animation 动画专题研究 一
    Android动画学习笔记-Android Animation
    Android 动画之RotateAnimation应用详解
    Android 动画之ScaleAnimation应用详解
    Android 动画之AlphaAnimation应用详解
  • 原文地址:https://www.cnblogs.com/tata-learning/p/11710504.html
Copyright © 2011-2022 走看看