zoukankan      html  css  js  c++  java
  • 函数初识

    函数

    写函数的时候,要尽量以功能为导向,结果最好不要直接在函数中打印(比如len(list),我只想要长度,不需要打印输出)

    def len_1(para): 同样,函数名不能是关键字,同等变量的命名规则就行了
    count = 0
    for i in para:
    count += 1
    return count return 终止函数,并返回一个值 (如果没有return,默认返回None (等同return None))
    a = 'dfdf'
    print(len_1(a))

    没有返回值

    • 啥也不写
    • return
    • return None

    返回一个值: 可以返回任意的数据类型。返回什么 就接受什么
    当然,我们目的是返回一个相关的参数
    返回多个值: 用一个变量接收,接收到的是一个元组
    用多个变量接收,返回值和接收返回值的变量数目要一致
    ---------------------------

    参数:

    形参和实参
    传参数可以传任意的数据类型,并且传什么,接收什么
    而站在传参数的角度上看问题:两种传参方式:
    第一种:按照位置
    第二种:按照关键字
    如果两种混用,按照先传位置,后传关键字的传参顺序(一般不推荐)

    1 def len_1(para): para:参数:形式参数,形参 接收参数
    2 if len(para) > 2:
    3 return True
    4 else:return False
    5 a = 'ab'
    6 len_1(a) a:参数:实际参数,实参 传参数、传参
    7 print(len_1(a))


    --------------
    -----------

    1 def replace_1(name,age)
    2 pass
    3 
    4 replace_1('zhou',18) 按照位置
    5 replace_1(name = ‘zhou’,age = 18) 按照关键字
    6 replace_1(‘zhou’,age = ‘18’) 先位置,后参数,否则会出错
    7 name是str类型,age是int类型,所以 多个 参数可以分别使用任意数据类型

    --------
    --------

    默认参数

    def replace_1(name,age = 18)
    pass
    replace_1('zhou') 不传年龄参数,就默认18 (默认参数是18)
    replace_1(‘zhou’,age = 80) 传年龄参数80, age = 80

    ------
    -----
    函数默认参数魔性的用法

     1 def lst(li = []):
     2     li.append(1)
     3     return li
     4 
    a = [] 5 print(lst(a)) 6 print(lst(a)) 7 print(lst(a)) 8 print(lst(a)) 9 #[1] 10 #[1, 1] 11 #[1, 1, 1] 12 #[1, 1, 1, 1] 13 14 类似于列表在函数外面 15 l = [] 16 def lst(li = l): 17 li.append(1) 18 return li 19 a = [] #a = [] 会累加 20 print(lst(a)) 21 print(lst(a)) 22 print(lst(a)) 23 print(lst(a)) 24 不过发现一个情况,函数定义的参数是个列表,实参也得是列表a = [list] 25 26 def lst(li = []): 27 li.append(1) 28 return li 29 print(lst([])) 30 print(lst([])) 31 print(lst([])) 每次都让[]添加 32 print(lst([])) 33 34 so,魔性的用法:默认参数 尽量避免使用可变数据类型

    ------

    函数的参数:
    形参:(定义阶段)
    位置参数
    默认参数
    动态参数
    实参:(调用阶段)
    位置传参
    关键字传参

    动态参数:

    *args  **kwargs

     1 def func(*args):   参数前面加*,这个参数就变成动态参数
     2     print(args)      如果打印,会发现 接收过来的参数是元组形式
     3 func(1,2,3,4)
     4 #(1,2,3,4)
     5 或者:迭代添加参数,迭代参数   *变量名称
     6 li = ‘dfdf’
     7 func(*li)
     8 #('d','f','d','f')   元组
     9 ---
    10 
    11 def func(a,b,c,*args):   
    12     print(a,b,c)
    13     print(*args)
    14     
    15 func(1,3,2,4,5,6)
    16 #1,3,2                           #位置参数接收完后,剩下的都被*args以元组的方式接收
    17 #(4,5,6)   元组
    18 -----
    19 
    20 如果有默认参数,那就放到*args后面
    21 def func(a,b,c,*args):   
    22     print(a,b,c)
    23     print(*args)
    24     
    25 func(1,3,2,4,5,6)
    26 #1,3,2                           #位置参数接收完后,剩下的都被*args以元组的方式接收
    27 #(4,5,6)
    28 -------
    29 
    30 def func(a,b,c,*args,key = 100):   
    31     print(a,b,c)
    32     print(*args)
    33     print(key)    
    34 func(1,3,2,4,5,6)
    35 #1,3,2
    36 #456
    37 #100
    38 func(1,3,2,4,5,key = 9)
    39 #1,3,2
    40 #4,5
    41 #9
    42 ---------
    *args,**kwargs

    形式参数的顺序

        位置        剩余位置       默认(关键字)    关键字(除了默认关键字,剩下的关键字)
    def func(   a,b,      *args,           key = '11'                 **kwargs)

    1 def func(a,b,c,*args,key = 100,**kwargs):
    2     print(a,b,c)       #1 3 2
    3     print(args)        #(4, 'a')
    4     print(key)          #18
    5     print(kwargs)   #{'m': 6, 'n': 'y'}
    6 
    7 func(1,3,2,4,'a',key=18,m = 6,n = 'y')

    万能传参

     1 def func(*args,**kwargs):
     2     print(args)
     3     print(kwargs)
     4 
     5 func()
     6 
     7 li = ‘abcd’
     8 func(*li)            #'a','b','c','d'
     9 dic = {'name':'kitty','age':18}
    10 func(**dic)     #
    11 
    12 li = 'abcd'
    13 def func(*args):
    14     print(args)
    15 func(*li)                              *变量打散
    16 #('a', 'b', 'c', 'd')
    17 
    18 
    19 def func(**kwargs):      #**kwargs 只接收关键字,所以调用函数是,括号不能放变量
    20     print(kwargs)
    21 dic = {'name':'kitty','age':18}
    22 func(name='kitty',age=18)    #只能是关键字参数
    23 func(**dic)  #如果不想重新输入字典的键值对,可以用**dic,把字典打散
    24 #字典打散:'name'='kitty','age'=18
    View Code
  • 相关阅读:
    解析xml
    序列化为xml
    aspose.cells excel表格导入导出
    文件下载
    jquery拼接和拆分字符串,并加入特殊符号
    VC Windows系统服务创建代码
    Lua 基础知识-面向对象
    iOS 网络与多线程--8.百度地图的使用(调用系统浏览器)
    iOS 网络与多线程--7.Performselector消息处理方法
    iOS 网络与多线程--6.下载并保存网络图片
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/7762304.html
Copyright © 2011-2022 走看看