zoukankan      html  css  js  c++  java
  • Python--各种参数类型

    1. Python的参数传递是值传递还是引

    举例说明Python函数参数传递的几种形式,并说明函数传参是值传递还是引用传递

    一、位置参数

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

    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', 2)#输出:hello tanggu 女士, welcome to python world!
    print_hello('tanggu', 3)#输出:hello tanggu 先生, welcome to python world!(字典中没有3的值,所以返回“先生”)



    # 字典中get()用法:dict.get(key, default=None)
    #key -- 字典中要查找的键。default -- 如果指定键的值不存在时,返回该默认值值。

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

    # 以下是用关键字参数正确调用函数的实例
    # print_hello('tanggu', sex=1)
    # print_hello(1, name='tanggu')
    # print_hello(name='tanggu', sex=1)
    # print_hello(sex=1, name='tanggu')

    # 以下是错误的调用方式
    # print_hello(name='tanggu', 1)
    # print_hello(sex=1, 'tanggu')

    通过上面的代码,我们可以发现:有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序的

    三、默认参数

    用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

    # 正确的默认参数定义方式--> 位置参数在前,默认参数在后
    def print_hello(name, sex=1):
        ....
    
    # 错误的定义方式
    def print_hello(sex=1, name):
        ....
    
    # 调用时不传sex的值,则使用默认值1
    # print_hello('tanggu')
    
    # 调用时传入sex的值,并指定为2
    # print_hello('tanggu', 2)


    四、可变参数

    定义函数时,有时候我们不确定调用的时候会传递多少个参数(不传参也可以)。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。

    1、包裹位置传递

    定义函数时,有时候我们不确定调用的时候会传递多少个参数(不传参也可以)。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。

    def func(*args):
    ....


    # func()
    # func(a)
    # func(a, b, c)

    我们传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是包裹位置传递。

    2、包裹关键字传递

    def func(**kargs):
        ....
    
    # func(a=1)
    # func(a=1, b=2, c=3)

    kargs是一个字典(dict),收集所有关键字参数


    更多参数参见:http://www.cnblogs.com/bingabcd/p/6671368.html
  • 相关阅读:
    电容充放电时间计算
    常见AVX贴片钽电容封装尺寸、容值、耐压值的关系
    EPCS1结构及访问注意事项
    拜占庭将军问题
    photoshop的蒙板的作用
    linux系统脚本的常见启动顺序
    进制转换
    8>ORACLE四种关闭方式
    32位和64位操作系统的区别
    javascript 对大小写的问题
  • 原文地址:https://www.cnblogs.com/wangyanyan/p/7481508.html
Copyright © 2011-2022 走看看