zoukankan      html  css  js  c++  java
  • Python中的函数

    函数的格式

    def 函数名(形参):
        函数体
        return 返回值

    函数的返回值

    return

    • 结束函数体的执行,并且设定返回值

    • return后面不加入任何内容,默认返回None

    • 不加return默认也是返回None

    • return可是返回多个值,多个值中间用逗号分隔;

    示例

    def test1():
        for i in range(5):
            pass
        return 'aaa','bbb'
    print(test1())

    函数的参数

    传递参数(实参)

    • 是一个实实在在的参数,是占据内存地址的

    • 传递参数是在调用函数的过程当中进行的

    接收参数(形参)

    • 是一种形式意义的参数

    • 在定义时是不占据内存地址

    • 接收参数是在定义函数的过程中进行的

    • 形参可以没有、一个或者多个;多个形参之间用逗号分隔

    位置参数

    调用函数时根据函数定义的参数位置来传递参数

    def print_hello(name, sex):
        sex_dict = {1: u'先生', 2: u'女士'}
        print('hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生')))
    
    print_hello('tanggu', 1)
    # 两个参数的顺序必须一一对应,且少一个参数都不可以

    关键字传参

    用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。

    def sum1(a, b):
        print(a, b)
        res = a + b
        return res
    
    # 正确示范
    ret = sum1(1, 2)
    ret = sum1(a=1, b=2)
    ret = sum1(b=1 , a=2)
    
    # 错误示范
    ret = sum1(1, a = 2)        # 因为a同时接收了两个参数 

    默认参数

    用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值

    def classmate(name,sex=''):
      print('%s : %s'%(name,sex))

    动态参数(*args)

    接收所有的位置参数

    def sum(*args):
        n = 0
        for i in args:
            n+=i
        return n
    
    print(sum(1,2,3,4))

    接收的是按照位置传参的值,组织成一个元组

    动态参数(**args)

    接收所有的关键字传参

    def func(**kwargs):
        print(kwargs)
    
    func(a = 1,b = 2,c =3)
    func(a = 1,b = 2)
    func(a = 1)

    接受的是按照关键字传参的值,组织成一个字典

    解包

    *和**,也可以在函数调用的时候使用,称之为解包裹(unpacking)

    1、*的解包方式

    def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
        print(args)
    
    func(1,2,3,4,5)
    l = [1,2,3,4,5]
    func(*l)  #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

    2、**的解包方式

    def func(**kwargs):
        print(kwargs)
    
    func(a=1,b=2)
    d = {'a':1,'b':2} #定义一个字典d
    func(**d)

    总结

    1. 站在传参的角度上,参数的传递顺序是:位置传参 >> 关键字传参
    2. 站在形参的角度上,参数的设定顺序是:位置参数 >> 动态参数(*args) >> 默认参数 >> 动态参数(**args)
  • 相关阅读:
    .net中的正则表达式使用高级技巧 (二)
    经典的LZW算法C语言实现
    .net中的正则表达式使用高级技巧
    Atlas应用程序调试技巧
    从毕业到现在是如何走来的!!!
    关于JS的一些实际问题
    js学习笔记(十四)事件处理模型
    js学习笔记(十一)窗口和框架
    关于css的一些问题
    浏览器布局BUG汇总
  • 原文地址:https://www.cnblogs.com/guge-94/p/10431526.html
Copyright © 2011-2022 走看看