19 print方法
print(*objects, sep, end, file, flush)方法,参数objects表示多个输出的对象;参数sep表示多个输出对象直接的分隔符,默认为1个空格;参数end表示输出对象结束符,默认为换行符;参数file表示数据流输出到的文件;参数flush表示数据流输出至文件时是否缓冲,默认为False(不缓冲)
因为print方法中的参数end默认值为换行符,所以上面代码的运行结果会分多行显示。
如果需要在同一行显示,我们只需要将参数end设置为空即可.
for i in ['Python','is','useful']:
print(i,end=' ')
Python is useful
20 continue接触当前循环进入下次循环
continue的中文含义是“继续”,写在循环的代码中,表示结束当前循环,继续下一次循环
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
count1 = 0 # 创建变量,用于奇数求和
count2 = 0 # 创建变量,用于偶数求和
for i in l: # 循环遍历列表中全部元素
if i % 2 == 0: # 判断变量i中存储的为偶数
count2 += i # 进行偶数求和运算
continue # 结束当前循环过程,进入下一次循环
count1 += i # 进行奇数求和运算
print (count1) # 显示输出结果为:25
print (count2) # 显示输出结果为:20
21 算术运算符
**:幂运算符,能够实现某个数值的幂运算
//:整除运算符,能够实现除法运算,但结果是向下取整数部分
22 定义函数
某个代码某块可能需要用到多次,未避免重复编写可定义为函数。
定义内容包括函数关键字以及函数运算过程中的代码。
return返回结果和print输出结果的区别
return返回结果用来给变量赋值,同时return会跳出结束当前函数;而print直接将结果打印在屏幕上
注意以下两端代码的输出
def get_birthday(id): # 定义函数名称并设定参数
year = id[6:10] # 函数运算过程
month = id[10:12] # 函数运算过程
day = id[12:14] # 函数运算过程
return year, month, day # 返回多个运算结果
y, m, d = get_birthday('110123199001012121') # 调用函数,将3个返回值存入3个变量
print('您的出生日期是%s年%s月%s日。' % (y, m, d)) # 显示输出结果为:您的出生日期是1990年01月01日。
def get_birthday(id): # 定义函数名称并设定参数
year = id[6:10] # 函数运算过程
month = id[10:12]
day = id[12:14]
return year, month, day
birthday = get_birthday('110123199001012121') # 调用函数,返回结果存入变量
print(birthday) # 显示输出结果为:('1990', '01', '01')
print('您的出生日期是%s年%s月%s日。' % birthday) # 显示输出结果为:您的出生日期是1990年01月01日。
return返回的结果用三个变量接受就是三个结果,用一个变量接受则返回一个包含三个元素的元组。
23 定义函数参数相关
函数的参数包含两种:位置参数和默认参数(也叫关键字参数)。定义函数时,如需定义两种参数,则位置参数在前且各参数位置在引用函数时必须一一对应,默认参数在所有位置参数后且无需一一对应,否则会抛出异常:
SyntaxError: non-default argument follows default argument
语法错误:无默认值参数跟随默认值参数(即位置参数在关键字参数后方)
def get_birthday(id, get_age=False): # 定义函数名称并设定参数,get_age为关键字参数,默认值为False
if get_age: # 对参数进行判断
return 2017 - int(id[6:10]) # 返回计算公式的计算结果
else:
year = id[6:10] # 函数运算过程
month = id[10:12] # 函数运算过程
day = id[12:14] # 函数运算过程
return year, month, day # 返回多个变量值
result = get_birthday('110123199001012121', True) # 调用函数,输入2个参数
print(result) # 显示输出结果为:27
result = get_birthday('110123199001012121') # 调用函数,省略第2个参数
print(result) # 显示输出结果为:('1990', '01', '01')
24 函数参数的可变性分析:
当外部变量是不可变的数据结构,作为参数传入函数时,在函数内部的修改操作无法对外部变量产生影响;而当外部变量是可变的数据结构,作为参数传入函数时,在函数内部的修改能够让外部变量发生改变。
def creat_name_list(name_list,name1,name2,name3): # 定义函数并设定参数
name_list.append(name1) # 为列表添加新元素
name_list.append(name2)
name_list.append(name3)
lst = [] # 创建空列表
creat_name_list(lst,'小楼老师','苍井老师','吉泽老师') #调用函数并传入参数
print(lst) # 显示输出结果为:['小楼老师', '苍井老师', '吉泽老师']
def change_number(num): # 定义函数并设定参数
num = 1 # 修改参数变量的值
n = 0 # 创建变量
change_number(n) # 调用函数并传入参数
print(n) # 显示输出结果为:0
25 收集参数
def creat_name_list(name_list, *names): # 定义函数并设定参数,*names为收集参数
print(type(names)) # 显示输出参数names的数据类型,结果为:<class 'tuple'>
if names: # 判断收集参数names不为空值
for name in names: # 循环遍历names
name_list.append(name) # 为列表添加新元素
lst = [] # 创建空列表
creat_name_list(lst, '小楼老师', '苍井老师', '吉泽老师', '樱井老师') # 调用函数并传入参数
print(lst) # 显示输出结果为:['小楼老师', '苍井老师', '吉泽老师', '樱井老师']
names
收集参数的设定只需要给变量名称前面加上一个拼接(Splicing)操作符“”即可
def creat_name_list(*names): # 定义函数并设定参数,*names为收集参数
print(type(names)) # 显示输出参数names的数据类型,结果为:<class 'tuple'>
name_list = list(names) # 将元组names转换为列表并存入变量name_list
return name_list # 返回列表
lst = creat_name_list('小楼老师', '苍井老师', '吉泽老师', '樱井老师') # 调用函数并传入参数,通过变量接收返回值
print(lst) # 显示输出结果为:['小楼老师', '苍井老师', '吉泽老师', '樱井老师']
另外,也可以通过收集参数的方式,灵活的传入多个关键字参数。
设定参数时,在变量名称前加上拼接操作符“**”即可。
def creat_user(**user_info): # 定义函数并设定参数,*user_info为收集参数
print(type(user_info)) # 显示输出参数user_info的数据类型,结果为:<class 'dict'>
return user_info # 返回参数值
user=creat_user( name='小楼老师',age=18, height='182',weight= '90KG') # 调用函数并传入参数
print(user) # 显示输出结果为:{'name': '小楼老师', 'age': 18, 'height': '182', 'weight': '90KG'}
在上方代码中,我们设定了一个收集参数获取所有传入的关键字参数。
在代码第二句中,我们能够获取到变量user_info的类型为字典。
那么,这个字典我们可以直接作为返回值,通过return语句返回.
特殊的: 拼接操作符 “*”和“**”还能能反过来用,作用为解析。示例代码:
def get_volume(length, width, height): # 定义函数并设定参数
return length * width * height # 返回计算结果
params = (3, 4, 5) # 创建参数元组
print(get_volume(*params)) # 显示输出结果为:60
星号“*”可以解析可迭代序列
在上述代码中,params为一个包含元素与函数参数数目相同的元组,拼接操作符“*”将元组解析为三个独立的三个元素传入函数。
“**”也可以类似使用
def user_info(name,age,height,sex='男'): # 定义函数并设定参数
info = '姓名-%s 性别-%s 年龄-%s 身高-%s'% (name,sex,age,height) # 格式化字符串
return info # 返回结果
params = {'name': '小楼', 'age': '18', 'height': '180CM'} # 创建参数字典
print(user_info(**params)) # 调用函数,并传入参数,显示输出结果为:姓名-小楼 性别-男 年龄-18 身高-180CM
另外,还要补充说明一点。
单星号“*”可以解析可迭代序列的作用不仅限在参数处理中。
举个小例子,让两个元组混合为集合。
s1 = {(1, 2, 3), (3, 4, 5)}
s2 = {*(1, 2, 3), *(3, 4, 5)}
print(s1) # 显示输出结果为:{(3, 4, 5), (1, 2, 3)}
print(s2) # 显示输出结果为:{1, 2, 3, 4, 5}