PythonNote4_(函数、方法、函数参数等)

参考: http://www.opython.com/310.html

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)操作符“
”即可

特别说明:上方代码中,是在函数外部创建了列表,并作为参数传入到函数中。我们也可以在函数内部去创建这个列表,然后通过return语句返回。
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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值