美文网首页
06 python 函数中的参数

06 python 函数中的参数

作者: 小码码 | 来源:发表于2018-07-02 15:17 被阅读32次

1 参数的类型

  • 1.1位置参数
def test(x,y):     //位置参数
    return x+y
  • 1.2关键字参数
def test(x=1,y=2):
    return x+y
  • 1.3位置参数和关键字参数混用
def test(x,y=2):    //关键字参数必须在最右边,否则报错
    return x+y

def test(x=1,y):    //会报错  SyntaxError: non-default argument follows default argument
    return x+y
  • 1.4不定长参数之args
    其实并不是必须写成
    args,只有变量前面的 才是必须的.写成var也可以. 而写成*args 只是一个通俗的命名约定。
    (1)举例
def test(x,*args):
    print(x)
    print(args)

test(2,3,4,5,6)     // 输出为:2       (3, 4, 5, 6)    
test(1, {'name':'alex'})  // 输出为:1     ({'name': 'alex'},)
test(1,['x','y','z'])      //输出位:1       (['x', 'y', 'z'],)
test(1,*['x','y','z'])     //输出位:1    ('x', 'y', 'z')
test(1 *{'name':'alex'})    //报错 TypeError: unsupported operand type(s) for *: 'int' and 'dict'  因为args对应的为list类型

(2) *args 的使用场景
当一个函数在使用时不知道会传递多少个参数时,可以用 *args 来发送一个非键值对的可变数量的参数列表给一个函数.
例如:

# 定义函数
def test_var_args(f_arg, *argv):
    print("first normal arg:", f_arg)
    for arg in argv:
        print("another arg through *argv:", arg)
# 调用函数
test_var_args('yasoob', 'python')
test_var_args('yasoob', 'python', 'eggs')
test_var_args('yasoob', 'python', 'eggs', 'test')

除了第一个参数是必传的以外,后面传1个、2个、3个参数都可以,argv类似于一个list,里面存了不确定个数的参数。

(3) 使用 *args 来调用函数示例

# 定义函数
def test_args_kwargs(arg1, arg2, arg3):
    print("arg1:", arg1)
    print("arg2:", arg2)
    print("arg3:", arg3)

#使用`*args`方式传参
>>> args = ("two", 3, 5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5
  • 1.5不定长参数之kwargs
    其实并不是必须写成kwargs,只有变量前面的 才是必须的.写成vars也可以. 而写成*kwargs只是一个通俗的命名约定。
    (1)举例
def test(x,**kwargs):
    print(x)
    print(kwargs)

test(1,y=2,z=3)     //输出为1   {'z': 3, 'y': 2}
test(1,2,y=2,z=3)   //报错  TypeError: test() takes 1 positional argument but 2 were given

(2)**kwargs的使用场景
kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数, 你应该使用kwargs。
例如:

def greet_me(**kwargs):
    for key, value in kwargs.items():
        print("{0} == {1}".format(key, value))

>>> greet_me(name="yasoob")
name == yasoob

kwargs类似于一个字典类型的数据。

(3) 使用 **kwargs 来调用函数示例

#使用`**kwargs`方式参数
>>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
>>> test_args_kwargs(**kwargs)
arg1: 5
arg2: two
arg3: 3

总结

  • 位置参数必须一一对应,缺一行多一行都不行
  • 关键字参数,无需一一对应,但缺一行多一行都不行
  • 位置参数必须在关键字参数左边,否则报错
  • 标准参数与args、*kwargs在使用时的顺序:
    如果函数里同时使用三种参数, 顺序是:
some_func(fargs, *args, **kwargs)

相关文章

  • python基础-07-函数

    python基础-函数 1.函数的定义 例子: 2.python中函数的参数详解 必备参数demo: 默认参数de...

  • 06 python 函数中的参数

    1 参数的类型 1.1位置参数 1.2关键字参数 1.3位置参数和关键字参数混用 1.4不定长参数之args其实并...

  • Python高阶函数学习笔记

    python中的高阶函数是指能够接收函数作为参数的函数 python中map()函数map()是 Python 内...

  • python:函数说明

    Python: 函数参数魔法 2016-12-01 函数参数 在 Python 中,定义函数和调用函数都很简单,但...

  • python---函数参数

    python---函数参数 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参...

  • 不论BAT大神,还是开发小担当都必须会的Python知识点

    Python函数示例:调用,缩进,参数和返回值 什么是Python中的函数? Python中的函数用于在程序中的多...

  • 二、python其函数及其高级特性

    1.函数 定义函数 语法: def 函数名(参数): 函数体 return参数 在Python交互环境中定...

  • Python3函数

    一、基本 1、函数定义:def 函数名(参数):代码1......2、函数调用:函数名(参数)注:在Python中...

  • 函数的基础

    在Python中,函数如下定义:def 函数名(参数1,参数2,...,参数n):函数体(语句块) 1.函数的命名...

  • Python函数的参数(详细版)

    函数的参数有:必选参数、默认参数、可变参数、关键字参数。 在Python中定义函数,可以用必选参数、默认参数、可变...

网友评论

      本文标题:06 python 函数中的参数

      本文链接:https://www.haomeiwen.com/subject/ukqluftx.html