尝试使用Python的不同特性
- 数媒艺术生计算机小白来更新了!!!还有前面#1和2章的基础知识待我慢慢更新,以下更新内容都适合零基础的人参考,如有不对的地方还望各路大神指正🌟
也欢迎同专业或是一起正在慢慢学习Python的同学交流🌟.
1 关键字参数
正如我们讨论的函数可以有参数,我们可以把值传递给它们,当函数被调用时,可以通过positional arguments传递。
那我们应该如何声明和定义函数以及如何传递参数或关键字参数
def print_name(first, last):
print("First name %s " %first)
print("Last name %s " %last)
fn = "Ming"
ln = "Xiao"
print_name( fn , ln )
我们有一个print_name的定义函数,它取两个变量然后用一些字符串格式打印
运行这个得到结果:
在print_name的函数中有两个参数first和last,当我调用这个函数时,我们把fn给first,ln传递给last
把它们调换一下
我们可以使用关键字参数
for example:
这将给出相同的结果,你可能会说这并没有改变任何东西,因为我给出的fn和ln仍然是同样的顺序
但如果我调换一下位置
result:
它的结果还是正确的,因为在这种情况下Python不再监听参数的位置,而是用关键字监听一个符号,把参数对应到函数的值,这时它不是看参数的先后位置,它会寻找作为关键字的last,并取这个符号的变量。
这就是区别和我们如何应用的方法,用关键字参数代替位置参数。
我们也可以把两者混合
:
所以这会得到相同的结果,没有冲突
但如果我这样做
:
我会遇到错误,运行后Python会抛出一个错误,因为它会先把fn识别为first(这样就等于已经有了first),因此它将会在两个参数之间产生冲突
所以只有把first = ln 改成 last = ln ,程序才会运行平稳。
2 改变参数值
在函数内更改参数(parameter)变量的值不会影响相应参数(argument)的值
这很重要,如果我们把一个参数传递给一个函数并且我们改变了参数的值,这个改变不会影响到最初通过的函数
def change_val(num):
num += 100
print("Inside parameter value 内部参数值 %d" %num)
val = 100
print("Argument value 参数值 %d" %val)
change_val(val)
print("Argument value after function call 函数调用后的参数值 %d" %val)
num += 100 意思是num = num + 100
就是让它自己加上100
运行结果:
这个脚本是参数值100,
因此print(“Argument value 参数值 %d” %val)结果是100,
val的值100将会被插入print(“Argument value 参数值 %d” %val),
然后我调出change_val函数,100+100=200,因此,print(“Inside parameter value 内部参数值 %d” %num)结果是200,
然后当函数停止被调用和结束时,值被设置回去为100,所以print(“Argument value after function call 函数调用后的参数值 %d” %val)结果是100,因为我们在函数内执行的100总和没有改变原始值。
(num += 100中num是一个局部变量,数字是一个局部变量,在函数停止运行时停止了,所以当我们回来的时候val不等于200,因为它从来没有在里面,它又回到了100。)
总的来说就是函数改变的是函数内部num的值,原本位于函数外的val的值是不变的。
3 返回多个值
Python支持从一个函数返回多个值:return a ,b ,c ,d …我可以在一个函数中的单个return返回多个值
def get_name():
first = input("Enter first name : ")
last = input("Enter last name : ")
return first, last
f_name, l_name = get_name()
print(f_name)
print(l_name)
相同概念,这一次提示用户从键盘输入名和姓,名字分别存储在first和last的变量里,就像之前一样。
我们来运行它:
和预期一样,用f_name和l_name打印了Ming和Xiao,因为当返回的函数返回两个用逗号隔开的值,如果我有两个变量准备好获得返回值,first将是这第一个的变量,last将进入第二个变量
我要在返回的时候再加一个变量,这样可以更清楚知道返回多个变量,而不仅仅是两三个。
添加student_number的变量
运行:
4 变量范围
如果我们不知道变量的范围,它可能无法从函数和其它东西中访问,所以在函数中创建的变量是这个函数的局部变量(函数内的变量是局部的),像之前的first,last…都是局部变量,只能从变量声明后的函数内的语句访问变量。
def add_numbers(n1, n2):
summation = n1 + n2
print("Here is sum %d" %summation)
add_numbers(10, 5)
结果为
summation不存在于函数之外,如果我在下面加一个print(summation),Python会给我一个错误。
错误示例
因为summation没有被定义,summation只在变量中定义,因此,当函数结束时,summation这个局部变量被销毁,所以,要非常注意变量的范围