从零开始的python计划#3.1

尝试使用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这个局部变量被销毁,所以,要非常注意变量的范围

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值