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

    python函数-函数初识

    1.函数的定义

    语法
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    

    2.函数的使用原则---先定义后调用

    #定义阶段
    def foo():
        print('from foo')
        bar()
    def bar():
        print('from bar')
    #调用阶段
    foo()
    

    3.函数的返回值  

     3.1返回值的种类

      (1)没有返回值,返回None

        ·只有return:结束一个函数的继续

        ·没有return

        ·有return None:不常用

     

    #只有一个return
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    

      

    # 没有return
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    

      

    # 有return None:不常用
    
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return None
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    

      

      (2)有一个返回值

              ·可以返回任何数据类型

        ·只要返回就可以接收到

        ·如果在一个函数中有多个return,只返回第一个

    def func():
        s =  '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return count
        return  #'这是第二个return  不返回'
    
    res = func()
    print(res)

    >>>12

    (3)返回多个值

    • 用多个变量接收:有多少返回值就要有多少变量接收
    • 用一个变量接收:接收到的是一个元组
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return s, count
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    >> > ('人生苦短我用python', 12)
    
    res1, res2 = func()
    print(res1, res2)
    >>> 人生苦短我用python 12
    

    4.函数的参数  

    1、参数的概念  

    1.没有参数:定义函数和调用函数时括号里都不写内容

    2.有一个参数:传什么就是什么

    3.有多个参数:位置参数

    ==顺序:位置参数,*args,默认参数,**kwargs==

    2.参数的种类

    1.形参的角度:

    • 位置参数:必须传,且有几个就必须传几个
    • * args:接收的是按照位置传参的值,组织成一个元组
    • 默认参数:可传可不传,不传就按默认值
    • ** kwargs:接收的是按照关键字传参的值,组织成一个字典
    # 位置参数
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔','男')
    >>>姓名是:乔
    >>>性别是:男
    
    # 默认参数
    def name_sex(name, sex='男'):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔')
    >>>姓名是:乔
    >>>性别是:男
    
    # *args---元组
    def name_sex(*args):
        print(args)
    name_sex('乔','男')
    >>>('乔', '男')
    
    # **kwargs---字典
    def name_sex(**kwargs):
        print(kwargs)
    name_sex(姓名='乔',性别='男')
    >>> {'姓名': '乔', '性别': '男'}
    

    2.实参的角度

      

    • 按位置传参:
    • 按关键字传参:
    • 按位置、按关键字混合传参:必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
    # 按位置传参
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔', '男')
    >>>姓名是:乔
    >>>性别是:男
    
    # *按关键字传参
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex(sex='男',name='乔')
    >>>姓名是:乔
    >>>性别是:男
    
    # *按位置、按关键字混合传参 必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔',sex='男')
    >>>姓名是:乔
    >>>性别是:男
    

    5、动态参数的另一个传参方式

    1、站在形参的角度上,给变量加上*,就是组合所有传来的  
    def func(*args):
        print(args)
    

     2、站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

    unc(1,2,3,4,5)
    l = [1,2,3,4,5]
    func(*l)
    

    6、默认参数的陷阱:默认参数是一个可变数据类型

    一、
    def qqxing(l = []): l.append(1) print(l) qqxing() qqxing([]) qqxing() qqxing() 二、
    def qqxing(k,l = {}): l[k] = 'v' print(l) qqxing(1) qqxing(2) qqxing(3)

      

      

     

  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/a438842265/p/8464733.html
Copyright © 2011-2022 走看看