网站建设运营的灵魂是什么,类似朋友圈wordpress,怎么修改wordpress 后台路径,做游戏网站的需求分析定义一个函数非常简单#xff0c;但是怎么定义一个函数#xff0c;需要什么参数#xff0c;怎么去调用却是我们需要去思考的问题。
如同大多数语言一样#xff08;如 Java#xff09;#xff0c;Python 也提供了多种参数的设定#xff08;如#xff1a;默认值参数、关…定义一个函数非常简单但是怎么定义一个函数需要什么参数怎么去调用却是我们需要去思考的问题。
如同大多数语言一样如 JavaPython 也提供了多种参数的设定如默认值参数、关键字参数、形参等。使用这些参数定义出来的代码可以让我们适应不同的开放场景也能简化我们的代码开发工作。
默认值参数
我们创建一个函数定义参数中一个或多个赋予默认值后我们可以使用比允许的更少的参数去调用此函数举个例子注意:以下代码都使用python3.7版本
def def_param_fun(prompt, retries4, reminderPlease try again!): while True: ok input(prompt) if ok in (y, ye, yes): return True if ok in (n, no, nop, nope): return False retries retries - 1 if retries 0: raise ValueError(invalid user response) print(reminder) # 我们可以如下进行调用def_param_fun(Do you really want to quit?)
def_param_fun(Do you really want to quit?, 2)
def_param_fun(Do you really want to quit?, 2, Please, yes or no!)
如上所示我们可以使用一个或多个参数去调用此函数我们实际生产中,很多情况下会赋予函数参数默认值的情形因此合理使用此种参数形式可以简化我们很多工作量。 重要使用默认值参数时如果我们的默认值是一个可变对象时我们调用函数可能出现不符合我们预期的结果。如下 def f(a, l[]): l.append(a) return l # 此时调用函数print(f(1))print(f(2))print(f(3))
# 返回值# [1]# [1, 2]# [1, 2, 3] 这是由于函数在初始化时默认值只会执行一次所以在默认值为可变对象列表、字典以及大多数类实例我们可以如下操作 def f(a, lNone): if l is None: l [] l.append(a) return l
# 再次调用函数print(f(1))print(f(2))print(f(3))
# 返回值# [1]# [2]# [3]
可变参数
可变参数也就是我们对于函数中定义的参数是可以一个或多个可以变化的其中 *args代表着可以传入一个list或者tuple, **args代表着可以传入一个dict。举个例子
def variable_fun(kind, *arguments, **keywords): print(friend : , kind, ;) print(- * 40) for arg in arguments: print(arg) print(- * 40) for kw in keywords: print(kw, :, keywords[kw]) # 函数调用variable_fun(xiaoming, hello xiaoming, nice to meet you!, motherxiaoma, fatherxiaoba, sonsee you) # 输出结果first arg: xiaoming ...----------------------------------------hello nice to meet you!----------------------------------------mother : xiaomafather : xiaobason : see you
我们还可以使用下面的方式进行调用得到上面相同的结果
list01 [hello xiaoming, nice to meet you!]dict01 {mother: xiaoma, father: xiaoba, son: see you}variable_fun(xiaoming, *list01, **dict01)
以上其实是python的解包操作和java类似。
关键字参数
关键字参数允许你调用函数时传入0个或任意个含参数名的参数这样可以让我们灵活的去进行参数的调用。举个例子
# 借用官网例子def key_fun(voltage, statea stiff, actionvoom, typeNorwegian Blue): print(-- This key_fun wouldnt, action, end ) print(if you put, voltage, volts through it.) print(-- Lovely plumage, the, type) print(-- Its, state, !)
# 函数调用 key_fun(1000) # 1 positional argumentkey_fun(voltage1000) # 1 keyword argumentkey_fun(voltage1000000, actionVOOOOOM) # 2 keyword argumentskey_fun(actionVOOOOOM, voltage1000000) # 2 keyword argumentskey_fun(a million, bereft of life, jump) # 3 positional argumentskey_fun(a thousand, statepushing up the daisies) # 1 positional, 1 keyword 注意不可以重复传值,否则会报如下错误: # TypeError: key_fun() got multiple values for argument voltagekey_fun(100, voltage1000) # error
总结
本节主要简单的介绍了python中函数参数的使用设定的方式可以配合使用但是也不要过多的去设计否则会造成函数的可读性变的很差。