1.Python中也有像C++一样的默认缺省函数
1 def foo(text,num=0):
2 print text,num
3
4 foo("asd") #asd 0
5 foo("def",100) #def 100
定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面。
调用时提供默认值参数值时,使用提供的值,否则使用默认值。
2.Python可以根据参数名传参数
1 def foo(ip,port):
2 print "%s:%d" % (ip,port)
3
4 foo("192.168.1.0",3306) #192.168.1.0:3306
5 foo(port=8080,ip="127.0.0.1") #127.0.0.1:8080
第4行,没有指定参数名,按照顺序传参数。
第5行,指定参数名,可以按照参数名称传参数。
3.可变长度参数
1 #coding:utf-8 #设置python文件的编码为utf-8,这样就可以写入中文注释
2 def foo(arg1,*tupleArg,**dictArg):
3 print "arg1=",arg1 #formal_args
4 print "tupleArg=",tupleArg #()
5 print "dictArg=",dictArg #[]
6 foo("formal_args")
上面函数中的参数,tupleArg前面“*”表示这个参数是一个元组参数,从程序的输出可以看出,默认值为();dicrtArg前面有“**”表示这个字典参数(键值对参数)。可以把tupleArg、dictArg看成两个默认参数。多余的非关键字参数,函数调用时被放在元组参数tupleArg中;多余的关键字参数,函数调用时被放字典参数dictArg中。
下面是可变长参数的一些用法:
1 #coding:utf-8 #设置python文件的编码为utf-8,这样就可以写入中文注释
2 def foo(arg1,arg2="OK",*tupleArg,**dictArg):
3 print "arg1=",arg1
4 print "arg2=",arg2
5 for i,element in enumerate(tupleArg):
6 print "tupleArg %d-->%s" % (i,str(element))
7 for key in dictArg:
8 print "dictArg %s-->%s" %(key,dictArg[key])
9
10 myList=["my1","my2"]
11 myDict={"name":"Tom","age":22}
12 foo("formal_args",arg2="argSecond",a=1)
13 print "*"*40
14 foo(123,myList,myDict)
15 print "*"*40
16 foo(123,rt=123,*myList,**myDict)
输出为:
从上面的程序可以看出:
(1)如代码第14行。
元组对象前面如果不带“*”、字典对象如果前面不带“**”,则作为普通的对象传递参数。
多余的普通参数,在foo(123,myList,myDict)中,123赋给参数arg1,myList赋给参数arg2,多余的参数myDict默认为元组赋值。
(2)如代码第16行。
参数中如果使用“*”元组参数或者“**”字典参数,这两种参数应该放在参数列表最后。并且“*”元组参数位于“**”字典参数之前。
关键字参数rt=123,因为函数foo(arg1,arg2="OK",*tupleArg,**dictArg)中没有rt参数,所以最后也归到字典参数中。
相关推荐
Python的函数使用非常灵活,除了正常定义的必选参数外,还可以使用关键字参数、默认参数、可变参数,使函数通过定义出来的接口,通过参数设置,简化调用者的代码。 必须参数,即函数调用时必须要传的参数,下面进行...
1.Python中也有像C++一样的默认缺省函数 复制代码 代码如下: def foo(text,num=0): print text,num foo(“asd”) #asd 0 foo(“def”,100) #def 100 定义有默认参数的函数时,这些默认值参数 位置必须都在非...
在探讨Python函数传递参数的方式时,很多人会陷入“值传递”与“引用传递”的概念之中。实际上,这两种说法在Python中并不完全适用,因为Python有自己的特殊机制来处理参数传递。本文将通过具体的代码示例和内存地址...
### 向Python脚本传递参数知识点详解 在Python编程中,能够从命令行接收参数是一项非常实用的功能。本文将深入探讨如何使用`sys.argv`来接收命令行参数,并通过一个具体的示例——过滤文本文件中的特定关键字——来...
在Python中,函数参数通过赋值的方式传递。当函数被调用时,实际上是在共享对象的引用。这种特性对于不可变对象(如整数)来说,其在函数内部的任何变化都不会影响到原始对象;但对于可变对象(如列表),则有可能...
在Python中,可变参数是一个非常强大的特性,它允许函数接受不定数量的参数。这可以通过在函数定义中使用星号`*`前缀来实现。 - **定义可变参数**: - 在函数定义时,形参前加上星号`*`表示该参数为可变参数。例如...
- **元组(Tuples)**:不可变的列表,一旦创建后不能修改。 - **字典(Dictionaries)**:与Perl的哈希类似,基于键值对的集合,支持快速查找和更新操作。 ### 结论 Perl和Python各有优势,Perl在文本处理、...
涵盖的主题包括:函数的概念、为何需要定义函数、定义和调用自定义函数的方法、参数的多种传递方式(位置参数、关键字参数、默认参数、可变参数)、函数返回值、副作用、仅限关键字参数、仅限位置参数、文档字符串和...
### Python参数魔法:可变参数与关键字参数深度解析 Python作为一种高级编程语言,在设计之初就致力于简化编程工作,提升开发效率。它所拥有的特点,如动态类型系统、自动内存管理、大型标准库以及开放源代码等,都...
本文将详细介绍如何在Python函数中处理关键字参数,包括如何定义接受关键字参数的函数、如何在函数中使用**kwargs收集未明确命名的关键字参数,以及如何利用这些参数进行复杂的数据处理。 关键字参数是Python函数的...
### Python函数中参数是传递值还是引用详解 在探讨Python函数参数传递机制之前,我们首先需要理解Python中变量与对象的关系。不同于C/C++等语言,Python中的变量更像是对象的引用或标签,而不是一个单独的内存空间...
而可变与不可变类型是Python中两种截然不同的数据类型。理解这两种类型的特性对于编写高效且正确的Python程序至关重要。 首先,可变类型(Mutable types)指的是对象的内容可以被修改,而对象的内存地址不变。...
4. **可变长度参数**:允许传递任意数量的位置参数(*args)或关键字参数(**kwargs)。 例如,一个带有默认值参数的函数: ```python def greet(name, greeting='Hello'): print(greeting, name) greet('Alice'...
首先,我们需要明确Python函数参数的四种类型: 1. 必选参数:这是函数定义时必需的参数,没有默认值,调用函数时必须提供。 2. 默认参数:在定义函数时,可以为参数提供默认值,如果调用时未提供该参数,将使用...
在Python编程中,函数可以接受可变数量的参数,这一特性使得函数更加灵活,能够处理不确定数量的输入数据。本文将介绍如何在Python中实现接受任意个数参数的函数,并解释其工作原理。 首先,Python提供了一种简单的...
本文将深入探讨Python函数中的可变长参数,即那些允许函数接受不确定数量参数的功能。 首先,让我们了解Python函数参数的三种基本类型: 1. 位置参数:这是最基础的参数类型,调用函数时按照顺序传入值,函数定义...
Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1、 func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): print args >>> func(1,2,3) (1, 2, 3) >>...
##### 3、可变长参数 - **位置可变参数**:使用`*args`形式来接收任意数量的位置参数,并将它们作为元组传递给函数。 ```python def sum_2(*x_list): n = 0 for i in x_list: n += i return n sum_2(3, 4, ...
总结,`*args` 和 `**kwargs` 是Python中处理可变参数的强大工具,它们使得函数更具灵活性和可扩展性,尤其在处理动态参数或者需要将参数传递给其他函数的场合,显得尤为重要。了解并熟练掌握这两个概念,能让你在...