一、def 函数
python 提供了函数功能,可以将想要在程序中重复使用的部分功能抽象成一个函数,以方便程序调用,或者提供给其他模块使用
def function_name(parameters): expressions
python 使用 def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值,在 expressions 中的逻辑代码中用 return 返回
def function(): print('This is a function') a = 1+2 print(a) # 打印 # This is a function # 3 function()
1) 函数参数
在调用函数的时候,参数个数和位置一定要按照函数定义。如果忘记了函数的参数的位置,只知道各个参数的名字,可以在函数调用的过程中,指明特定的参数,这样的话,参数的位置将不受影响
def func(a, b): c = a+b print("the c is %d" % c) # 打印 the c is 3 func(b = 1, a = 2)
2) 默认参数
在定义函数时,有时候有些参数在大部分情况下是相同的,只不过为了提高函数的适用性,提供了一些备选的参数,为了方便函数调用,可以将这些参数设置为默认参数,那么该参数在函数调用过程中可以不需要明确给出
def function_name(para_1,...,para_n=defau_n,..., para_m=defau_m): expressions
函数声明只需要在默认参数的地方用 = 号给定即可。注意:所有的默认参数都不能出现在非默认参数的前面
def sale_car(price, color='red', brand='carmy', is_second_hand=True): print('price %d color %s brand %s is_second_hand %s' % (price, color, brand, str(is_second_hand))) # 打印 price 1000 color red brand carmy is_second_hand True sale_car(1000)
3) 可变参数
函数的可变参数是传入的参数(个数)是可以变化的。注意:可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数
def report(name, *grades): total_grade = 0 for grade in grades: total_grade += grade print('%s total grade is %d' % (name, total_grade)) # 打印 Mike total grade is 17 report('Mike', 8, 9)
4) 关键字参数
关键字参数可以传入 0 个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict)
def portrait(name, **kw): print('name is %s' % name) for k,v in kw.items(): print('%s %s' % (k, str(v))) # 打印 # name is Mike # country China # age 24 # education bachelor portrait('Mike', age=24, country='China', education='bachelor')
5) 自调用
如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试代码,但是该脚本作为一个模块对外提供功能的时候,单元测试代码也会执行,这些往往是我们不想要的,可以把这些代码放在脚本最后。在执行该脚本的时候,if 判断语句将会是 True,此时其内部的代码将会执行;如果外部调用该脚本,if 判断语句则为 False,其内部的代码将不会执行
if __name__ == '__main__': #code_here
二、class 类
class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如 Calculator。 class 可以先定义自己的属性(如: name = 'Good Calculator'),class 后面还可以跟 def,定义一个函数(如: def add(self, x, y))。注意:这里的self 是默认值
class Calculator: name = 'Good Calculator' price = 18 def add(self, x, y): print(self.name) result = x + y print(result) def minus(self, x, y): result = x - y print(result) def times(self, x, y): print(x * y) def divide(self, x, y): print(x / y) cal = Calculator() cal.name cal.add(8, 10)
__init__可以理解成初始化class的变量。注意:这里是双下划线
class Calculator: name = 'good calculator' price = 18 def __init__(self, name, price, height = 10, width = 14, weight = 16): self.name = name self.price = price self.h = height self.wi = width self.we = weight cal = Calculator('bad calculator',18,17,16,15) print(c.name) print(c.wi)
三、input
variable = input() 表示运行后,可以在屏幕中输入一个数字,该数字会赋值给自变量。注意:输入的只能是数字(整型或浮点型),输入字符串会报错
variable1 = input('please input a number') variable2 = int(input('please input a number'))
四、Tuple 元组
用小括号或者无括号来表述,是一连串有顺序的数字
# 这两种方式都是正确的 tuple1 = (12, 3, 5, 15, 6) tuple2 = 12, 3, 5, 15, 6 # 输出各个元素的两种方式 for content in tuple1: print(content) for index in range(len(tuple2)): print('index = %d, number in tuple = %s' % (index, str(tuple2[index])))
五、List 列表
用中括号来表述,是一系列有序的数列。除了可以像元组那样拿到各个元素之外,还有一系列自带的功能
1) 添加
a = [1, 2, 3, 4, 1, 1, -1] a.append(0) # 在a的最后面追加一个0 a.insert(1, 0) # 在位置1处添加0
2) 移除
a.remove(2) # 删除列表中第一个出现的值为2的项
3) 显示特定位
print(a[0]) # 显示列表a的第0位的值 print(a[-1]) # 显示列表a的最末位的值 print(a[0:3]) # 显示列表a的从第0位 到 第2位(第3位之前) 的所有项的值 print(a[5:]) # 显示列表a的第5位及以后的所有项的值 print(a[-3:]) # 显示列表a的倒数第3位及以后的所有项的值
4) 打印列表中的某个值的索引
print(a.index(2)) # 显示列表a中第一次出现的值为2的项的索引
5) 统计列表中某个值出现的次数
print(a.count(-1))
6) 排序
a.sort() # 默认从小到大排序 a.sort(reverse = True) # 从大到小排序
7) 多维列表
multi_dim_a = [[1, 2, 3], [2, 3, 4], [3, 4, 5]] # 三行三列
六、字典
如果说 List 是有顺序地输入输出的话,那么字典的存档形式则是无需顺序的。
在字典中,有 key 和 value 两种元素,每一个 key 对应一个 value,key 是名字,value 是内容。数字和字符串都可以当作 key 或者 value,在同一个字典中,并不需要所有的 key 或 value 有相同的形式。List 可以看成是一种 key 为有序数列的字典
字典还可以以更多样的形式出现,例如:字典的元素可以是一个 List,或者再是一个列表,再或者是一个 function。索引需要的项目时,只需要正确指定对应的 key 就可以了
d1 = {'apple':1, 'pear':2, 'orange':3} d2 = {1:'a', 'b':2, 'c':3} d3 = {'apple':[1, 2, 3], 'pear':{1:3, 3:'a'}, 'orange':func} print(d1['apple']) # 1 print(d2['b']) # 2 print(d2[1]) # a print(d3['pear'][3]) # a del d1['pear']
七、import 模块
import time # import time 模块 print(time.localtime()) import time as t # t 可以自己定义 print(t.localtime()) from time import time, localtime # 只 import 自己想要的功能 print(localtime()) print(time()) from time import * # 输入模块的所有功能 print(localtime())
八、读写文件
使用 open 能够打开一个文件,open 的第一个参数为文件名和路径 ‘my file.txt’,第二个参数为将要以什么方式打开它
text = 'This is my first test. This is the second line. This the third ' my_file = open('my file.txt', 'w') my_file.write(text) my_file.close()
给文件添加内容,打开类型为 a,表示 append
append_text = ' This is appended file.' my_file = open('my file.txt','a') my_file.write(append_text) my_file.close()
读取文件内容
file = open('my file.txt','r') content = file.read() # 读取文本的所有内容 content = file.readline() # 读取第一行 second_read_time = file.readline() # 第二次使用时读取第二行 content = file.readlines() # 读取所有行并以 list 方式储存 print(content)