当前位置:
首页 > temp > python入门教程 >
-
python--高级语法 5
day3:
1、形参角度:(重点)
万能参数: *args
- *的魔性用法-------在函数的定义时,表示聚合 ;在函数的调用时,表示打散或解包。
def eat(a,b,c,d):
print('我请你吃:{},{},{},{}'.format(a,b,c,d))
eat('蒸羊羔', '蒸熊掌', '蒸鹿邑','烧花鸭')
# 急需要一种形参,可以接受所有的实参。
# 万能参数: *args, 约定俗称:args,
# 函数定义时,*代表聚合。 他将所有的位置参数聚合成一个元组,赋值给了 args。
def eat(*args):
print(args)
print('我请你吃:{},{},{},{}'.format(*args))
eat('蒸羊羔', '蒸熊掌', '蒸鹿邑','烧花鸭')
我请你吃:蒸羊羔,蒸熊掌,蒸鹿邑,烧花鸭
('蒸羊羔', '蒸熊掌', '蒸鹿邑', '烧花鸭')
我请你吃:蒸羊羔,蒸熊掌,蒸鹿邑,烧花鸭
Process finished with exit code 0
- 练习题:写一个函数:计算你传入函数的所有的数字的和。
#练习题:写一个函数:计算你传入函数的所有的数字的和。
# tu1=(1,2,3,4,5,6,7)
# count=0
# for i in tu1:
# count=count+i
# print(count)
def func(*args):
count = 0
for i in args:
count = count + i
return count
print(func(1,2,3,4,5,6,7))
28
Process finished with exit code 0
万能参数:**kwargs
# **kwargs
# 函数的定义时: ** 将所有的关键字参数聚合到一个字典中,将这个字典赋值给了kwargs.
def func(**kwargs):
print(kwargs)
func(name='alex',age=73,sex='laddyboy')
{'name': 'alex', 'age': 73, 'sex': 'laddyboy'}
Process finished with exit code 0
# * **在函数的调用时,*代表打散---也可以说 解包
def func(*args):
print(args)
func([1,2,3],[22,33])
func(*[1,2,3],[22,33])
func(*[1,2,3],*[22,33])
([1, 2, 3], [22, 33])
(1, 2, 3, [22, 33])
(1, 2, 3, 22, 33)
Process finished with exit code 0
def func(*args,**kwargs):
print(args)
print(kwargs)
func({'name': '太白'},{'age': 18})
print('*********')
func(**{'name': '太白'},**{'age': 18})
({'name': '太白'}, {'age': 18})
{}
*********
()
{'name': '太白', 'age': 18}
Process finished with exit code 0
形参角度的参数的顺序
(位置参数,默认参数,万能参数)
-
思考?------*args的位置?
- 必须放在位置参数后面,默认参数前面(如果默认参数放在*args 前面,那么调用的时候,默认参数的值会被改变)
#形参角度的参数的顺序(位置参数,默认参数,万能参数)
# *args的位置?----必须放在位置参数后面,默认参数前面
def func(a,b,*args,sex='男'):
print(a,b)
print(sex)
print(args)
func(1,2,3,4)
1 2
男
(3, 4)
Process finished with exit code 0
-
思考?----**kwargs的位置?
- 要放在默认参数后面,
#**kwargs的位置?
def func(a,b,*args,sex='男',**kwargs):
print(a,b)
print(sex)
print(args)
print(kwargs)
func(1,2,3,4,age=12)
1 2
男
(3, 4)
{'age': 12}
Process finished with exit code 0
仅限关键字参数(了解)
- 放在*args和**kwargs的位置之间,类似于默认参数
def func(a,b,*args,sex='男',c,**kwargs):
print(a,b)
print(sex)
print(args)
print(c)
print(kwargs)
func(1,2,3,4,age=12,c='666')
1 2
男
(3, 4)
666
{'age': 12}
Process finished with exit code 0
形参角度最终的顺序:
- 位置参数,*args,默认参数,仅限关键字参数,**kwargs
函数的嵌套(高阶函数)
# 例1:---思考打印结果和顺序
def func1():
print('in func1')
print(3)
def func2():
print('in func2')
print(4)
func1()
print(1)
func2()
print(2)
in func1
3
1
in func2
4
2
Process finished with exit code 0
# 例2:---思考打印结果和顺序
def func1():
print('in func1')
print(3)
def func2():
print('in func2')
func1()
print(4)
print(1)
func2()
print(2)
1
in func2
in func1
3
4
2
Process finished with exit code 0
# 例3:---思考打印结果和顺序
def fun2():
print(2)
def fun3():
print(6)
print(4)
fun3()
print(8)
print(3)
fun2()
print(5)
3
2
4
6
8
5
Process finished with exit code 0
出处:https://www.cnblogs.com/wushaofan/p/17156647.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数