1. 函数关键字
函数代码块以 def 关键词开头。
2. 函数的定义
语法:
def 函数名(参数列表):
函数体
Example:
def my_abs(x):
if x >= 0:
return x
else:
return -x
空函数
用 pass
占位符,可以让代码执行,但什么都不做。主要用于,todo 场景。
def nop():
pass
3. 函数参数与作用域
函数的参数
- 必选参数
- 默认参数
- 可变参数
- 关键字参数
- 命名关键字参数
必选参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def my_print(str):
print(str)
return
my_print() # 将会 throw TypeError,因为必选参数,必须传,若不传将会抛异常。
默认参数
调用函数时,如果没有传递参数,则会使用默认参数。需要注意,默认参数必须指向不可变对象。若指向为可变对象,将会导致问题。
def my_print(str, age = 18):
print('name: ', str)
print('age: ', age)
return
可变参数
一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。
def my_print(arg1, *args):
print("输出:")
print(arg1)
print(args)
return
my_print(1, 2, 3, 4)
输出:
1
(2, 3, 4)
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
关键字参数
关键字参数允许函数调用时参数的顺序与声明时不一致,Python 解释器能够用参数名匹配参数值。
def my_print(name, age):
print('姓名:', name)
print('年龄:', age)
my_print(age=18, name='小明')
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw) # kw会自动将多个参数,组装成 dict
person('小明', 18, sex='female', school='南山小学')
命名关键字参数
如果要限制关键字参数的名字,就可以用命名关键字参数。和关键字参数kw不同,命名关键字参数需要一个特殊分隔符,后面的参数被视为命名关键字参数。
def person(name, age, *, city, job):
print(name, age, city, job)
person('小明', 18, city='深圳', job='程序员')
多参数组合
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
4. 函数返回值
当 return 无返回值时
返回结果为, None
值。
返回多值
def move(x, y):
return x, y
返回值是一个tuple
5. file
打开文件方式(读写两种方式)
f = open('./task4_3.py', 'r')
print(f.read())
f.close()
with open('./task4_4.py', 'a') as f:
f.write('tiancity')
文件对象的操作方法
- file.open 关闭文件。关闭后文件不能再进行读写操作。
- file.read([size] 从文件读取指定的字节数,如果未给定或为负则读取所有。
- file.readline 读取整行,包括 "\n" 字符。
- ...
学习对excel及csv文件进行操作
excel 读操作
import xlrd
# read
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheets()[0]
row = sheet.row_values(0)
# 读取excel文件工作表中第1个工作簿的第1行第2列的数据
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheets()[0]
cell = sheet.cell(0, 1)
print(cell, type(cell))
cellValue = sheet.cell(0, 1).value
print(cellValue, type(cellValue))
# 循环遍历
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheet_by_index(0)
for i in range(sheet.nrows):
print(sheet.row_values(i))
excel 写操作
import xlwt
# write excel
excel = xlwt.Workbook()
sheet = excel.add_sheet("test1")
sheet.write(0, 1, 'tiancity')
excel.save('excel.xls')
6. os模块
- os.mkdir 创建目录
- os.rmdir 删除目录
- os.rename(old, new) 重命名
- os.remove 删除文件
- os.walk 遍历文件
- ...
7. datetime模块
from datetime import datetime, timedelta,timezone
# 获取当前日期
now = datetime.now()
# 获取制定日期
dt = datetime(2019, 5, 18, 19, 20)
print(dt)
# datetime转换为timestamp
dt.timestamp()
# timestamp 转 datetime
t = 1429417200.0
print(datetime.fromtimestamp(t)) # 本地时区
print(datetime.utcfromtimestamp(t)) # UTC时区
# str 转 datetime
print(datetime.strptime('2019-05-19 10:20:20', '%Y-%m-%d %H:%M:%S'))
# dateime 转 str
now = datetime.now()
print(now.strftime())
# datetime加减
now = datetime.now()
now + timedelta(hours=10)
# 时区转换
now = datetime.utcnow().replace(tzinfo=timezone.utc) # 获取utc时间,并将时区设置为UTC+0:00
# astimezone 将时区换成北京时区
now.astimezone(timedelta(timedelta(hours=8)))