摘自莫凡python(回顾python语法的时候做的笔记)
自调用
如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试 代码,但是该脚本作为一个模块对外提供功能的时候单元测试代码也会执行,这些往往我们不想要的,我们可以把这些代码放入脚本最后:
如果执行该脚本的时候,该 if 判断语句将会是 True,那么内部的代码将会执行。 如果外部调用该脚本,if 判断语句则为 False,内部代码将不会执行。
if __name__ == '__main__':
#code_here
可变参数
注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。
def report(name, *grades):
total_grade = 0
for grade in grades:
total_grade += grade
print(name, 'total grade is ', total_grade)
定义了一个函数,传入一个参数为 name, 后面的参数 *grades 使用了 *
修饰,表明该参数是一个可变参数,这是一个可迭代的对象。该函数输入姓名和各科的成绩,输出姓名和总共成绩。所以可以这样调用函数
report(‘Mike’, 8, 9),输出的结果为 Mike total grade is 17, 也可以这样调用
report(‘Mike’, 8, 9, 10),输出的结果为 Mike total grade is 27
关键词参数
def portrait(name, **kw):
print('name is', name)
for k,v in kw.items():
print(k, v)
定义了一个函数,传入一个参数 name, 和关键字参数 kw,使用了 ** 修饰。
表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。
如果调用参数
portrait('Mike', age=24, country='China', education='bachelor')
输出:
name is Mike
age 24
country China
education bachelor
元组Tuple&列表List
元组的元素是不可变的,元组的元素的元素是可变的
元组Tuple
a_tuple = (12, 3, 5, 15 , 6)
列表List
a_list = [12, 3, 67, 7, 82]
错误处理 try…as
处理错误:会使用到循环语句。首先报错:没有这样的文件No such file or directory. 然后决定是否输入y, 输入y以后,系统就会新建一个文件(要用写入的类型),再次运行后,文件中就会写入ssss
try:
file=open('eeee.txt','r+')
except Exception as e:
print(e)
response = input('do you want to create a new file:')
if response=='y':
file=open('eeee.txt','w')
else:
pass
else:
file.write('ssss')
file.close()
ZIP
zip函数接受任意多个(包括0个和1个)序列作为参数,合并后返回一个tuple列表
a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab)) #需要加list来可视化这个功能
"""
[(1, 4), (2, 5), (3, 6)]
"""
lambda
lambda定义一个简单的函数,实现简化代码的功能
fun= lambda x,y:x+y
x=int(input('x=')) #这里要定义int整数,否则会默认为字符串
y=int(input('y='))
print(fun(x,y))
map
map是把函数和参数绑定在一起。
>>> def fun(x,y):
return (x+y)
>>> list(map(fun,[1],[2]))
"""
[3]
"""
>>> list(map(fun,[1,2],[3,4]))
"""
[4,6]
"""
id&浅拷贝&深拷贝
什么是id?一个对象的id值在CPython解释器里就代表它在内存中的`地址
浅拷贝:只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已
深拷贝:deepcopy对外围和内部元素都进行了拷贝对象本身,而不是对象的引用
表现为:浅拷贝时被拷贝对象修改内部元素,会改变拷贝对象的内部元素
set
Set 最主要的功能就是寻找一个句子或者一个 list 当中不同的元素
清除元素
unique_char.remove('x')
print(unique_char)
# {'b', 'd', 'c', 'a'}
unique_char.discard('d')
print(unique_char)
# {'b', 'c', 'a'}
unique_char.clear()
print(unique_char)
# set()
筛选操作
unique_char = set(char_list)
print(unique_char.difference({'a', 'e', 'i'}))
# {'b', 'd', 'c'}
print(unique_char.intersection({'a', 'e', 'i'}))
# {'a'}