python变量后面加星号_Python 参数知识(变量前加星号的意义)

Python 参数知识(变量前加星号的意义)

过量的参数

在运行时知道一个函数有什么参数,通常是不可能的。另一个情况是一个函数能操作很多对象。更有甚者,调用自身的函数变成一种api提供给可用的应用。

对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数。这些“额外”的参数下一步再解释。

注意args和kwargs只是python的约定。任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用法一致,以便你的代码,其他的程序员也能轻松读懂。

位置参数

在参数名之前使用一个星号,就是让函数接受任意多的位置参数。

>>> def multiply(*args):

...     total = 1

...     for arg in args:

...         total *= arg

...     return total

...

>>> multiply(2, 3)

6

>>> multiply(2, 3, 4, 5, 6)

720

python把参数收集到一个元组中,作为变量args。显式声明的参数之外如果没有位置参数,这个参数就作为一个空元组。

关键字参数

python在参数名之前使用2个星号来支持任意多的关键字参数。

>>> def accept(**kwargs):

...     for keyword, value in kwargs.items():

...         print "%s => %r" % (keyword, value)

...

>>> accept(foo='bar', spam='eggs')

foo => 'bar'

spam => 'eggs'

注意:kwargs是一个正常的python字典类型,包含参数名和值。如果没有更多的关键字参数,kwargs就是一个空字典。

混合参数类型

任意的位置参数和关键字参数可以和其他标准的参数声明一起使用。混合使用时要加些小心,因为python中他们的次序是重要的。参数归为4类,不是所有的类别都需要。他们必须按下面的次序定义,不用的可以跳过。

1)必须的参数

2)可选的参数

3)过量的位置参数

4)过量的关键字参数

def complex_function(a, b=None, *c, **d):

这个次序是必须的,因为*args和**kwargs只接受那些没有放进来的其他任何参数。没有这个次序,当你调用一个带有位置参数的函数,python就不知道哪个值是已声明参数想要的,也不知道哪个被作为过量参数对待。

也要注意的是,当函数能接受许多必须的参数和可选的参数,那它只要定义一个过量的参数类型即可。

传递参数

相关文档:

#冒泡排序

def BubbleSort(mylist):

n = len(mylist)

i = 0

j = 0

bExchange = False

for i in range(1, n):

bExchange = False

j = n - 1

while j >= i:

if mylist[j] < mylist[j - 1]:

tmp = mylist[j]

myli ......

#使用类

class CPerson:

#类变量好比C++中的静态成员变量

population = 0

def SayHi(self):

print('Hello World')

def HowMany(self):

if CPerson.population == 1:

print('I am the only person here.')

else:

print(('We have %d perso ......

时常见到一些好的Python模块,如果不随时记下,等用的时候又是一阵乱翻,好在Python引用一个模块极其方便,OK,废话少说:

1. decimal

标准模块,2.4引入,用于浮点数的精确表示:

>>> 0.1 + 0.1 + 0.1 - 0.3

5.5511151231257827e-17

>>> from decimal import Decimal

>>> def _(x): retu ......

1.列表的递归---用于输出列表字符串中的每个元素 >>> def printList(L):

#如果为空,则什么都不做

if not L:

return

#如果是链表,则对第一个元素调用printList函数

& ......

1.Python中时间函数有几种不同的表示方法。一种是基于数字的表示方法,另外一种是用一系列值来表示,第三种是用ASCII码字符串的可读形式来表示的元组。 time()函数返回的是从某一时间点算起的秒数,该数值是一个浮点数。根据操作系统的不同,这个时间点也不同。通过求localtime(0)的值可以找到系统的该时间点。 localtime ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值