#学习笔记《简明python教程》
体会:言简意赅,很适合新手入门
2018年3月14日21:45:59###
1、global 语句
在不使用 global 语句的情况下,不可能为一个定义于函数之外的变量赋值;
如果外面存在全局变量,则将全局变量作用域拿过来;
如果外面不存在这个全局变量,则认为是创建一个全局变量;
适用于整型,字符串,但字典 列表 类,不适用,局部可以修改全局
x = 50
def func():
global x
print('x is', x)
x = 2
print('Changed global x to', x)
func()
print('Value of x is', x)
输出:
$ python function_global.py
x is 50
Changed global x to 2
Value of x is 2
2、关键字参数
如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过命名它们来给这些参数赋值——这就是关键字参数(Keyword Arguments)——我们使用命名(关键字)而非位置(位置参数调用)来指定函数中的参数。
这样做有两大优点:
- 我们不再需要考虑参数的顺序,函数的使用将更加容易
- 我们可以只对那些我们希望赋予的参数以赋值,只要其它的参数都具有默认参数值
调用时,默认参数非必须传递,关键字参数只能放在位置参数后面。
3、可变参数#####
想定义的函数里面能够有任意数量的变量,也就是参数数量是可变的,这可以通过使用星号来实现
*args, **kw
参数前面加了一个*号。在函数内部,参数args接收到的是一个元组tuple,即接收N个位置参数,转换为元组的形式;
参数前面加了两个**号,允许你传入0个或任意个含参数名的关键字参数,这些关键字参数在函数内部自动组装为一个dict,即把N个关键字参数,转换成字典的形式;
*args,可以直接接收元组,前面加*
**kw,可以直接接受字典,前面加**
可变参数也不能在位置参数的前面
4、Return返回值
- return; 表示返回 None,None 在 Python 中一个特殊的类型,代表着虚无;
- 不写return,也表示返回None,每一个函数都在其末尾隐含了一句 return None,除非你写了你自己的 return 语句;
- 函数可以返回多个值,实际上是tuple元组。也可以在不同的逻辑分支中返回不同类型的值
5、文档字符串DocString
该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束。第二行为空行,后跟的第三行开始是任何详细的解释说明。
- 通过使用函数的 __doc__属性来获取函数 print_max的文档字符串属性
- Python的help()函数,就是取得函数的 __doc__ 属性
def print_max(x, y):
'''打印两个数值中的最大数。
这两个数都应该是整数'''
# 如果可能,将其转换至整数类型
x = int(x)
y = int(y)
if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')
print_max(3, 5)
print(print_max.__doc__)#打印帮助
help(print_max)
print(__name__)
输出
5 is maximum
打印两个数值中的最大数。
这两个数都应该是整数
Help on function print_max in module __main__:
print_max(x, y)
打印两个数值中的最大数。
这两个数都应该是整数
__main__
>>>
6、os模块
import os;
print(os.getcwd())#查看你的程序目前所处在的目录
import sys;
print(sys.argv) #命令行参数,返回列表
print(len(sys.argv)) #参数个数
7、按字节码编译的.pyc 文件
导入一个模块是一件代价高昂的事情,因此 Python 引入了一些技巧使其能够更快速的完成。其中一种方式便是创建按字节码编译的(Byte-Compiled)文件,这一文件以 .pyc 为其扩展名,是将 Python 转换成中间形式的文件(还记得《介绍》一章中介绍的 Python 是如何工作的吗?)。这一 .pyc 文件在你下一次从其它不同的程序导入模块时非常有用,它将更加快速,因为导入模块时所需要的一部分处理工作已经完成了。同时,这些按字节码编译的文件是独立于运行平台的
8、from..import 语句
一般来说,应该尽量避免使用 from...import 语句,而去使用 import 语句。这是为了避免在你的程序中出现名称冲突,同时也为了使程序更加易读
9、模块的 name
每一个 Python 模块都定义了它的 name 属性。如果它与 main 属性相同则代表这一模块是由用户独立运行的
if __name__ == '__main__':
print('This program is being run by itself')
else:
print('I am being imported from another module')
10、dir 函数
内置的 dir() 函数能够返回由对象所定义的名称列表。 如果这一对象是一个模块,则该列表会包括函数内所定义的函数、类与变量
# 创建一个新的变量 'a'
>>> a = 5
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a']
# 删除或移除一个名称
>>> del a
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
dir() 函数能对任何对象工作。例如运行 dir(str) 可以访问 str(String,字符串)类的属性,同时,还有一个 vars() 函数也可以返回给你这些值的属性,但只是可能,它并不能针对所有类都能正常工作。
11、包
包是指一个包含模块与一个特殊的 init.py 文件的文件夹,后者向 Python 表明这一文件夹是特别的,因为其包含了 Python 模块。包是一种能够方便地分层组织模块的方式。