main函数
python在执行文件时,是直接从上往下执行,没有main函数,但每个文件有一个内置属性__name__,当python直接执行该文件时,属性值为__main__,当文件作为模块引入时,属性值为模块的名称,所以经常会有以下写法:
if __name__ == "__main__":
# execute only if run as a script
main()
命令行参数
导入模块:import sys
获取命令行参数:sys.argv
结束程序
sys.exit()
变量与作用域
当变量在Module(模块)、Class(类)、def(函数)中定义时,会有作用域的概念,示例1:
def func():
var = 100
print(var) # 100
func()
print(var) # NameError: name 'var' is not defined
当变量在if-elif-else、for-else、while、try-except ry-finally等语句块中不会产成作用域,示例2:
if True:
var = 100
print(var) # 100
print(var) # 100
搜索变量名的优先级:局部作用域 > 嵌套作用域 > 全局作用域 > 内置作用域,示例3:
var = 100
def func():
print(var) # UnboundLocalError: local variable 'var' referenced before assignment
# Python在当前作用域搜索var,由于函数中存在var,但此时尚未赋值,故报错。
var = 300 # 如果没有 var = 300 这句代码,上述语句将会引用全局变量var,则不会报错。
func()
print(var)
全局变量的使用,全局作用域的作用范围仅限于单个模块文件内,示例4:
global var # 声明全局变量
var = 100 # 给全局变量赋值
def func():
global var # 再次声明,表示这里使用的是全局变量
print(var) # 100
var = 300
func()
print(var) # 300
操作符
需要注意的操作符:
from __future__ import division # 使python2除法取得小数
print(2 ** 3) # 指数运算 结果为 8
print(18 // 10) # 除法取整 结果为 1
print(18 / 10) # 除法操作 在python2中会自动取整,结果为 1,python3中,结果为 1.8
# 如果使python2与python3结果一致,需要导入上面的模块
可用于字符串的操作符:
print("Ali" + "ce") # 连接操作 结果为 "Alice"
print("Alice" * 5) # 复制操作 结果为 "AliceAliceAliceAliceAlice"
输入与输出
myName = input() # python3
# myName = raw_input() # python2
print('It is good to meet you, ' + myName)
注意:python2 中输入函数为 raw_input
for循环与range函数
# 循环 5 次,i 的值分别为 0, 1, 2, 3, 4
for i in range(5):
print("i = " + str(i))
range 函数可以接受三个参数,分别为起始值,上限值(不包含),步长(默认为1):
# 循环 5 次,i 的值分别为 0, 2, 4, 6, 8
for i in range(0, 10, 2):
print("i = " + str(i))
导入模块
import moduleName
from moduleName import funcName
函数的定义与调用
def hello(name):
print("Hello " + name)
hello('Alice')
None值
其他编程语言可能称这个值为 null、nil、undefined
异常处理
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")