Chinaunix首页 | 论坛 | 博客
  • 博客访问: 790697
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2018-12-13 10:14
文章分类

全部博文(10)

文章存档

2020年(1)

2019年(9)

我的朋友

分类: C/C++

2019-10-11 09:32:48

None值:
    在Python 中有一个值称为None,它表示没有值。
    在幕后,对于所有没有return 语句的函数定义,Python 都会在末尾加上return None。而且,如果使用不带值的return 语句(也就是只有return 关键字本身),那么就返回None。


关键字参数和print()
   “关键字参数”是由函数调用时加在它们前面的关键字来识别的。关键字参数通常用于可选变元。例如,print()函数有可选的变元end 和sep,分别指定在参数末尾打印什么,以及在参数之间打印什么来隔开它们。
    比如print默认是以回车结束打印,但是可以设置end关键字参数,将它变成以另一个字符串结尾。
      print('Hello', end='')


    类似地,如果向print()传入多个字符串值,该函数就会自动用一个空格分隔它们。在交互式环境中输入以下代码:
      >>> print('cats', 'dogs', 'mice')
      cats dogs mice
    但是你可以传入sep关键字参数,替换掉默认的分隔字符串。在交互式环境中输入以下代码:
      >>> print('cats', 'dogs', 'mice', sep=',')
      cats,dogs,mice


    也可以在你编写的函数中添加关键字参数,但必须先在接下来的两章中学习列表和字典数据类型。现在只要知道,某些函数有可选的关键字参数,在函数调用时可以指定。




局部和全局作用域
    在被调用函数内赋值的变元和变量,处于该函数的“局部作用域”。在所有函数之外赋值的变量,属于“全局作用域”。处于局部作用域的变量,被称为“局部变量”。处于全局作用域的变量,被称为“全局变量”。一个变量必是其中一种,不能既是局部的又是全局的。
    可以将“作用域”看成是变量的容器。当作用域被销毁时,所有保存在该作用域内的变量的值就被丢弃了。只有一个全局作用域,它是在程序开始时创建的。如果程序终止,全局作用域就被销毁,它的所有变量就被丢弃了。


    全局变量可以在局部作用域中读取
    请看以下程序:
      def spam():
      print(eggs)
      eggs = 42
      spam()
      print(eggs)


    对于名称相同的局部变量和全局变量,要想生活简单,就要避免局部变量与全局变量或其他局部变量同名。但在技术上,在Python 中让局部变量和全局变量同名是完全合法的。


global 语句
    如果需要在一个函数内修改全局变量,就使用global 语句。如果在函数的顶部有global eggs 这样的代码,它就告诉Python,“在这个函数中,eggs 指的是全局变量,所以不要用这个名字创建一个局部变量。”
      def spam():
      ? global eggs
      ? eggs = 'spam'
      eggs = 'global'
      spam()
      print(eggs)


    有4 条法则,来区分一个变量是处于局部作用域还是全局作用域:
    1.如果变量在全局作用域中使用(即在所有函数之外),它就总是全局变量。
    2.如果在一个函数中,有针对该变量的global 语句,它就是全局变量。
    3.否则,如果该变量用于函数中的赋值语句,它就是局部变量。
    4.但是,如果该变量没有用在赋值语句中,它就是全局变量。


    在一个函数中,一个变量要么总是全局变量,要么总是局部变量。函数中的代码没有办法先使用名为eggs 的局部变量,稍后又在同一个函数中使用全局eggs 变量。
    在一个函数中,如果试图在局部变量赋值之前就使用它,像下面的程序这样,Python就会报错。
      def spam():
      print(eggs) # ERROR!
?       eggs = 'spam local'
?       eggs = 'global'
      spam()
    运行前面的程序,会产生出错信息。


异常处理:
    错误可以由try 和except 语句来处理。那些可能出错的语句被放在try 子句中。如果错误发生,程序执行就转到接下来的except 子句开始处。
    可以将前面除数为零的代码放在一个try 子句中,让except 子句包含代码,来处理该错误发生时应该做的事。
    def spam(divideBy):
    try:
        return 42 / divideBy
    except ZeroDivisionError:
        print('Error: Invalid argument.')
阅读(129017) | 评论(0) | 转发(0) |
0

上一篇:python

下一篇:python字符串

给主人留下些什么吧!~~