同福

Python函数参数默认值的使用【20210120】

介绍

介绍

福哥今天要给大家讲一讲关于Python语言对于函数参数默认值的设计。不可否认,在函数参数默认值设计方面Python真的是太帅了!这种设计思路真的是要把其他弱类型语言按在地上摩擦了!

这个主要体现在Python在对函数进行传值的时候支持的独特方式“定向传值”,它的设计让调用函数的人感觉舒服极了!

函数参数

无默认值

在函数所有参数都没有设置默认值的时候,我们必须按照函数参数的顺序一个一个地传入值才行

def funWithParams(host, port, user, pwd):
    print ("Try to connect host " + host
           + ":" + str(port) + " with account '"
           + user.decode("utf-8").encode("gbk") + "' and password '" + pwd.decode("utf-8").encode("gbk") + "'")

funWithParams("localhost", 8076, "鬼谷子叔叔", "123456")

a1e74331ec7fd1f5.jpg

部分默认值

在函数的一部分参数设置了默认值的时候,我们可以只提供没有设置默认值的参数的值就可以了

def funWithParams(host, port, user="福哥", pwd=""):
    print ("Try to connect host " + host
           + ":" + str(port) + " with account '"
           + user.decode("utf-8").encode("gbk") + "' and password '" + pwd.decode("utf-8").encode("gbk") + "'")

funWithParams("localhost", 8076)

这里面有个需要注意的地方,就是一个参数设置了默认值之后,其后的参数也都必须设置默认值,否则会报语法错误

def funWithParams(host, port, user="福哥", pwd):
    print ("Try to connect host " + host
           + ":" + str(port) + " with account '"
           + user.decode("utf-8").encode("gbk") + "' and password '" + pwd.decode("utf-8").encode("gbk") + "'")

funWithParams("localhost", 8076)

209768e55f12017b.jpg

全部默认值

将函数所有参数都设置一个默认值,这时候调用函数可以不需要传入任何参数即可完成

def funWithParams(host="localhost", port=8076, user="福哥", pwd=""):
    print ("Try to connect host " + host
           + ":" + str(port) + " with account '"
           + user.decode("utf-8").encode("gbk") + "' and password '" + pwd.decode("utf-8").encode("gbk") + "'")

funWithParams()

1a15291c91f8add7.jpg

定向传值

所谓定向传值就是说我们在调用函数的时候不需要按照函数参数顺序一个一个传入值,可以根据自己的情况选择性的给某一个或几个参数传值,当然这是建立在这些参数本身设置了默认值的前提下

示例1

函数全部参数都有默认值,而我们只传入了pwd参数的值

def funWithParams(host="localhost", port=8076, user="福哥", pwd=""):
    print ("Try to connect host " + host
           + ":" + str(port) + " with account '"
           + user.decode("utf-8").encode("gbk") + "' and password '" + pwd.decode("utf-8").encode("gbk") + "'")

funWithParams()

示例2

函数部分参数设置了默认值,而我们除了无默认值的参数外只传入了pwd参数的值

def funWithParams(host, port, user="福哥", pwd=""):
    print ("Try to connect host " + host
           + ":" + str(port) + " with account '"
           + user.decode("utf-8").encode("gbk") + "' and password '" + pwd.decode("utf-8").encode("gbk") + "'")

funWithParams("localhost", 8076, pwd="abcdef")

总结

今天福哥带着童鞋们学习了Python函数参数默认值的使用技巧,可以发现函数参数默认值的“定向传值”真是一个很棒的设计,它给调用函数的人提供了非常舒服的编程体验,福哥推荐这种方式定义函数。