0509Python基础-函数初识
1、昨日内容回顾
文件操作:
1,打开文件,产生文件句柄。
2,对文件句柄进行操作。
3,关闭文件。
带b的都是操作非文本文件。
读:
r 读,可以默认不写。
f1.read()全部读取。
f1.read(n)
r模式,n为字符。
rb模式,n为字节。
f1.readline() 按行读取。
f1.readlines() 返回一个list,list里面的每个元素为原文件的每一行。
for 循环。
rb bytes类型读取。
r+ 读写
r+b
写: 没有原文件,创建文件,写入内容。
有原文件,清空原文件,写入内容。
w 写,
wb
w+
w+b
追加:
没有原文件,创建文件,写入内容。
有原文件,直接追加内容。
a
ab
a+
a+b
常用操作方法:
f1.read()全部读取。
f1.read(n)
r模式,n为字符。
rb模式,n为字节。
f1.readline() 按行读取。
f1.readlines()
seek(0) 是以字节调节的,调节光标的位置。
f1.seek(0,2) 将光标调整到最后。
tell() 告诉光标的位置。
readable() 是否可读。
writable() 是否可写。
truncate a a+ 对原文件进行截取。
文件的改。
2、函数的初识
def关键字 空格 函数名(与变量设置相同): 英文的冒号
函数体
执行函数 :函数名+()
函数是以功能为导向的,
def login():
pass
def register():
pass
3、函数的返回值。
return: 1,函数中遇到return 结束函数,下面代码不执行。
2,将函数里面的值返回给函数的执行者(调用者)。
第一种情况:
只有return,返回None
第二种情况:
return None
第三种情况:
return 单个值(返回的值与单个值的类型相同)
第四种情况:
return 多个值 以元组的形式返回给函数的调用者。
什么是None?
所有的空集合,空列表,空字典.... --->None
l1 = [1, 2, 3, 1, 6, 9, 10]
print(len(l1))
def my_len():
l1 = [1, 2, 3, 1, 6, 9, 100]
count = 0
for i in l1:
count += 1
return count
print(my_len())
def login():
print(111)
print(222)
return
print(333)
login()
def login():
a = 2
b = 3
print(111)
print(a,b)
return
print(login())
def login():
a = 2
b = 3
# return a
return [1, 2]
print(login(),type(login()))
ret = login()
a, b = ret
print(a, b)
def login():
a = 2
b = 3
return 1, 'alex', [1, 2], {'name': '老男孩'}
ret = login()
print(ret)
4、函数的参数。
# 实参角度
位置参数
一一对应,实参形参数量相等
关键字参数
一一对应,实参形参数量相等,实参顺序可变
混合参数 (位置参数,关键字参数)
关键字参数必须在位置参数后面
# 形参角度
位置参数
一一对应,实参形参数量相等
默认参数
默认参数必须放在形参的位置参数后面
默认参数不传值则为默认值,传值则覆盖默认值。
动态参数
def my_len(a): # 形式参数,形参
count = 0
for i in a:
count += 1
return count
l1 = [1, 2, 3, 1, 6, 9, 100]
print(my_len(l1))
s1 = 'fkdshadslfs'
my_len(l1)
ret = my_len(l1) # my_len(l1) = count
print(ret)
print(my_len(l1)) # 实际参数,实参
print(my_len(s1)) # 实际参数,实参
s1 = 'fhdsjfdsfsadfgsd'
len(s1)
def tes(a, b, c):
print(111)
print(a, b, c)
tes(22, 'alex', [11, 22, 33])
def max(x, y): return x if x > y else y
print(max(3000, 200))
# '''
# 三元运算
# '''
x = 100
y = 99
if x > y:
print(x)
else:
print(y)
c = x if x > y else y
print(c)
def tes(a, b, c):
print(111)
print(a, b, c)
tes(22, 'alex', [11, 22, 33])
def func(x, y,):
print(x, y)
func(y=3333, x=4)
def func1(x, y, z):
print(x, y, z)
func1(111, 222, z=555) # 混合传参 位置参数必须再前面
func1(111, y=555, 222) # 混合传参 位置参数必须再前面
def func2(y, x):
print(x, y)
func2(1, 2)
def input_information(name, sex='男'):
with open('information',encoding='utf-8', mode='a') as f1:
f1.write('{}\t{}\n'.format(name, sex))
while True:
msg = input('请输入用户的姓名,性别\Q或者q退出').strip()
if msg.upper() == 'Q':break
if ',' in msg:
name1, sex1 = msg.split(',')
input_information(name1, sex1)
else:
input_information(msg)