控制语句
if else elif语句
while循环语句
for循环语句
continue跳过当前循环,走下个循环
break 终止循环
- 在条件语句中,if 可以单独使用,但是 elif 和 else 必须和 if 同时搭配使用;而 If 条件语 句的判断,除了 boolean 类型外,其他的好显示出来。
- 在 for 循环中,如果需要同时访问索引和元素,你可以使用 enumerate() 函数来简化代 码。
- 写条件与循环时,合理利用 continue 或者 break 来避免复杂的嵌套,是十分重要的。
要注意条件与循环的复用,简单功能往往可以用一行直接完成,极大地提高代码质量与效 率。
l = [1, 2, 3, 4, 5, 6, 7] for index, item in enumerate(l):
if index < 5:
print(item)
异常捕捉
- 异常,通常是指程序运行的过程中遇到了错误,终止并退出。我们通常使用 try except 语句去处理异常,这样程序就不会被终止,仍能继续执行。
- 处理异常时,如果有必须执行的语句,比如文件打开后必须关闭等等,则可以放在 finally block 中。
- 异常处理,通常用在你不确定某段代码能否成功执行,也无法轻易判断的情况下,比如数 据库的连接、读取等等。正常的 flow-control 逻辑,不要使用异常处理,直接用条件语 句解决就可以了。
推导式
列表推导式
a_list= [number for number in range(1,6)]
字典推导式
str_test = 'zz66ll'
dict_count = {i:str_test.count(i) for i in set(str_test)}
集合推导式
{i for i in range(1,6)}
函数特性
作用域
- 全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效
- 局部作用域:局部名称空间,只能在局部范围内生效
在局部调用:局部命名空间->全局命名空间->内置命名空间
在全局调用:全局命名空间->内置命名空间
global
想让在局部对变量做的修改在全局生效,必须提前声明为全局变量,使用global关键字
a = 10
def func():
global a
a = 20
print(a)
func()
print(a)
nonlocal
1.外部必须有这个变量,不是全局位置!
2.在内部函数声明nonlocal变量之前不能再出现同名变量
a = 1
def f1():
a = 2
def f2():
nonlocal a
a = 3
f2()
print('a in f1 : ',a)
f1()
print(a)
闭包
内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数称为闭包函数
def outer():
a = 24
def inner():
print(a)
return inner
inn = outer()
inn()
参数
位置参数
def describe_pet(animal_type, pet_name)
关键字参数
describe_pet(animal_type=‘hamster’, pet_name=‘harry’)
默认值参数
def describe_pet(pet_name, animal_type=‘dog’)
任意数量参数
def make_pizza(size, *toppings)
任意数量关键字参数
def build_profile(first, last, **user_info)
arg、*args、*kwargs
三个参数位置固定,不可改变
*args 用来将参数打包成tuple给函数体调用
**kwargs 打包关键字参数成dict给函数体调用
def function(arg,*args,**kwargs):
print(arg,args,kwargs)
function(6,7,8,9,a=1, b=2, c=3)
#输出为
6 (7,8,9) {'c':3,'b':2,'a':1}
高阶函数
把函数作为参数使用的函数,叫高阶函数
#将数字放大300倍
def funA(n):
return n * 100
def funB(n ):
return funA(n) * 3
print(funB(9))
# 写一个高阶函数
def funC(n, f):
return f(n) * 3
print( funC(9, funA) )
闭包
闭包:
内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数
def nth_power(exponent):
def exponent_of(base):
return base ** exponent
return exponent_of # 返回值是 exponent_of 函数
square = nth_power(2) # 计算一个数的平方
cube = nth_power(3) # 计算一个数的立方
print(square) # 输出 <function __main__.nth_power.<locals>.exponent(base)>
print(cube) # 输出 <function __main__.nth_power.<locals>.exponent(base)>
print(square(2)) # 计算 2 的平方
print(cube(2)) # 计算 2 的立方
函数返回值默认为None
内置函数
input() 输入
print() 输出
type(o) 返回变量o的数据类型
eval("print(456)")#吧字符串转换成python代码去执行(有返回值)
exec("print(7889)")#吧字符串转换成python代码去执行(无返回值)
id(o) o是参数,返回一个变量的内存地址
hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错
open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+),可以用encoding指定编码.
callable(o),o是参数,看这个变量是不是可调用
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
数字——数据类型相关:bool,int,float,complex
数字——进制转换相关:bin,oct,hex
数字——数学运算:abs,divmod返回余,min,max,sum,round小数精确,pow幂运算
序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,all,any,zip,filter,map