day03 of python

函数

一般来说,我们总是希望避免复制代码,因为如果一旦决定要更新代码(比如说,发现了一个缺陷要修复),就必须记住要修改所有复制的代码。随着你获得更多的编程经验,常常会发现自己在为代码“消除重复”,即去除一些重复或复制的代码。消除重复能够使程序更短、更易读、更容易更新。

def语句和参数
如果调用print()或len()函数,你会传入一些值,放在括号之间,在这里称为“参数”。也可以自己定义接收参数的函数。例:
def hello(name):
    print('Hello' + name)
hello('Alice')
在这个程序的hello()函数定义中,有一个名为name的变元。“变元”是一个变量,当函数被调用时,参数就存放在其中。关于变元有一件特殊的事情值得注意:保存在变元中的值,在函数返回后就丢失了。

返回值和return语句
一般来说,函数调用求值的结果,称为函数的“返回值”。用def语句创建函数时,可以用return语句指定应该返回什么值。return语句包含以下部分:#return关键字;#函数应该返回的值或表达式。如果在return语句中使用了表达式,返回值就是该表达式求值的结果。

None值
在Python中有一个值称为None,它表达没有值。None是NoneType数据类型的唯一值(其他编程语言可能称这个值为null、nil或undefined)。就像布尔值True和False一样,None必须大写首字母N。如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可能有用。有一个使用None的地方就是print()函数的返回值。既然所有函数调用都需要求值为一个返回值,那么print()就返回None。在幕后,对于所有没有return语句的函数定义,Python都会在末尾加上return None。而且,如果使用不带值的return语句(也就是只有return关键字本身),那么就返回None。

print函数中有两个关键字参数(由函数调用时加在它们前面的关键字来识别的,关键字参数通常用于可选变元)为end和sep,分别指定在参数末尾打印什么,以及在参数之间打印什么来隔开它们。

局部和全局作用域
    在被调用函数内赋值的变元和变量,处于该函数的“局部作用域”。在所有函数之外赋值的变量,属于“全局作用域”。处于局部作用域的变量,称为“局部变量”。处于全局作用域的变量,称为“全局变量”。一个变量必是其中一种,不能即是局部的又是全局的。作用域很重要,理由如下:
#全局作用域中的代码不能使用任何局部变量;
#但是,局部作用域可以访问全局变量;
#一个函数的局部作用域中的代码,不能使用其他局部作用域中的变量。
#如果在不同的作用域中,你可以用相同的名字命名不同的变量。也就是说,可以有一个名为spam的局部变量,和一个名为spam的全局变量。
当特定函数调用中的代码修改变量时,该函数与程序其他部分的交互,只能通过它的参数和返回值,这缩小了可能导致缺陷的代码作用域。

global语句
如果需要在一个函数内修改全局变量,就使用global语句。如果在函数的顶部有global eggs这样的代码,它就告诉Python,“在这个函数中,eggs指的是全局变量,所以不要用这个名字创建一个局部变量。”有4条法则,来区分一个变量是处于局部作用域还是全局作用域;1、如果变量在全局作用域中使用(即在所有函数之外),它就总是全局变量。2、如果在一个函数中,有针对该变量的global语句,它就是全局变量。3、否则,如果该变量用于函数中的赋值语句,它就是局部变量。但是,如果该变量没有用在赋 值语句中,它就是全局变量。

异常处理
错误可以由try和except语句来处理。那些可能出错的语句被放在try子句中。如果错误发生,程序执行就转到接下来的except子句开始处。请注意,在函数调用中的try语句块中,发生的所有错误都会被捕捉。一旦执行跳到expect子句的代码,就不会回到try子句。它会继续照常向下执行。例:
def spam(divideBy):
    try:
        return 42 / divideBy
    except ZeroDivisionError:
        print('Error: Invalid argument.')

print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))

<第三章结束>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值