函数的基本属性

1.1 函数的含义

# 1、功能 :包裹代码,实现功能,达到目的
# 2、特点 :反复调用,提高开发效率,便于代码维护

1.1.2 函数的基本格式

# 函数名 :变量命名规则
# 函数的定义
def func():
pass
# 函数的调用
func()

1.2 函数的参数

1.2.1形式参数(函数定义处)

# 形式参数的顺序
# 位置参数 > 默认参数 > *args > 命名关键字参数 > **kwargs

1.2.1.1 位置参数

def func(a,b):
print(a,b)

1.2.1.2 默认参数

def func(a = 0,b = 9):
print(a,b)

1.2.1.3 位置参数 + 默认参数

"""
默认形参必须跟在位置形参的身后,顺序是一定的
"""
def func(a ,b ,c = 4 , d = 5):
print(a,b,c,d)

1.2.2 实际参数(函数调用处)

1.2.2.1 位置传参

"""
在函数调用时:实参数量及顺序需要与形参一一对应
"""
def func(a,b):
print(a,b)
func(5,8) # 5 8
func(8,5) # 8 5

1.2.2.2 关键字传参

"""
在函数调用时:
如果给予实参,那么直接使用实际参数
如果没有给予实参,那么使用参数默认自带的值
"""
def func(a = 0,b = 9):
print(a,b)
func(5,8) # 5 8
func(8,5) # 8 5
func(1) # 1 9

1.2.2.3 位置传参 + 关键字传参

"""
1、关键字传参是对具体的某个参数赋值,具体的顺序可以打乱
2、关键字实参必须跟在位置实参的身后,顺序是一定的
3、默认参数和关键字实参 在写法上一模一样
一个是在函数的定义处
一个是在函数的调用处
"""
def func(a,b,c,d,name = "name",age = 18):
print(a,b,c,d,name,age) func(1,2,3,4,age = 20 , name = "bajie") # 1 2 3 4 bajie 20
func(1,2,3,age = 20,4 , name = "bajie") # error

1.2.3 收集参数( *args , **kwargs)

1.2.3.1 收集参数 (在函数的定义处 -----> 聚合)

# *args 在函数的定义处专门用来收集多余的没人要的 位置实参
def func(a,b,c,*args):
print(a,b,c) # 1 2 3
print(args) # (4, 5, 5, 6, 7, 8) func(1,2,3,4,5,5,6,7,8)

# **kwarge 在函数的定义处专门用来收集多余的没人要的 关键字实参
def func(a=1,b=2,c=3,**kwargs):
print(a,b,c) # 15 16 17
print(kwargs) # {'f': 1, 'g': 2, 'j': 3}

func(f=1,g=2,j=3,a=15,b=16,c=17)

1.2.3.2 收集参数 (在函数的调用处 -----> 打散)

# * 把列表里面的所有元素拿出来,当成参数一个一个赋值给func进行调用
def func(a,b,c = 5,d = 6):
print(a,b) # 1 2
print(c,d) lst = [1,2]
func(*lst,c=3,d=4)
# **把字典里面的所有元素拿出来,拼装成键=值的参数形式,赋值给func进行调用
def func(a,b,c = 5,d = 6):
print(a,b)
print(c,d)              # 3 4
   
dic = {"c":3,"d":4}
func(1,2,**dic,)

1.2.3.3 练习示例

# 任意个数字符串的拼接
"""
班长:宋云杰
班花:刘彩霞
班草:刘子涛
吃瓜群众:牧树人,晏国彰,刘聪
"""
def func(**kwargs):
print(kwargs)
# 定义一个字典,存放每一位同学的身份
dic = {"monitor":"班长","class_flower":"班花","class_grass":"班草"}
strvar1 = ""
strvar2 = "" # 遍历字典中的键值对
for k,v in kwargs.items():
print(k,v) # monitor 宋云杰 class_flower 刘彩霞 class_grass 刘子涛 ....
# 判断键是否在字典当中,如果在,获取对应的身份,拼装成字符串
if k in dic:
strvar1 += dic[k] + ":" + v + "\n" # 班长 + ":" + 宋云杰 + '\n'
else:
strvar2 += v + "," # 去掉右边多余的\n和,形成最后的效果
print(strvar1.strip())
print("吃瓜群众:"+ strvar2.rstrip(","))

1.2.4 命名关键字参数

"""
定义命名关键字参数的两种方式:(在函数调用时,必须使用命名关键字参数来进行赋值)
(1)def func(a,b,*,c) c是命名关键字
(2)def func(*args,c,**kwargs) c是命名关键字参数
"""
# 定义方式一
def func(a,b,*,d,c):
print(a,b) # 1 2
print(d) # 3
print(c) # 10 func(1,2,d = 3,c=10)

# 定义方式二
def func(*args,c,**kwargs):
print(args) # (1, 2, 3, 4, 5, 6)
print(c) # 100
print(kwargs) # {'a': 1, 'b': 2, 'd': 6} func(1,2,3,4,5,6,a=1,b=2,d=6,c=100)

1.2.5 参数练习题

# 读代码测结果
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)

# 以上两个函数 打印结果
#(一)
f1(1, 2)
f1(1, 2, c=3)
f1(1, 2, 3, 'a', 'b')
f1(1, 2, 3, 'a', 'b', x=99)
f2(1, 2, d=99, ext=None)

#(二)
args = (1, 2, 3, 4)
kw = {'d': 99, 'x': '#'}
f1(*args, **kw)

#(三)
myargs = (1, 2, 3)
mykw = {'d': 88, 'x': '#'}
f2(*myargs, **mykw)

#(四)
def f1(a, b, c=0, *args,d,**kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
print(d)
f1(1,2,3, 'a', 'b',d=67, x=99,y=77)

 

day10 python之函数的参数的更多相关文章

  1. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  2. Python进阶-函数默认参数

    Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 ...

  3. 深入理解python中函数传递参数是值传递还是引用传递

    深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

  4. Python中函数传递参数有四种形式

    Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...

  5. 讲讲python中函数的参数

    python中函数的参数 形参:定义函数时代表函数的形式参数 实参:调用函数时传入的实际参数 列如: def f(x,y): # x,y形参 print(x, y) f(1, 2) # 1, 2 实参 ...

  6. python 中函数的参数

    一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...

  7. python中函数的参数解析

    python中函数的各种参数梳理: 1.形参:函数定义时传入的参数 2.实参:函数调用时传入的参数 (有形参必传实参,形参里自身特点可不传的,可传可不传) 3.缺省参数:不传为默认值,传了会覆盖(下面 ...

  8. python 之 函数的参数

    函数的参数好几种类型:包括位置参数.默认参数.可变参数.关键字参数.命名关键字参数. 廖大神python学习笔记,大神网站:百度搜索“廖雪峰的官网” 1.位置参数:调用函数时根据函数定义的参数位置来传 ...

  9. Python基础 --函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

随机推荐

  1. cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3

    cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3 //派生类的构造函数和析构函数//派生类的构造函数(执行步骤)//--执行基类的构造函数//--执行成员对象的构造函数//--执行 ...

  2. PyCharm远程连接服务器简明教程

    转自本人知乎(https://zhuanlan.zhihu.com/p/149040742) 由于实验室的GPU都是放在远程服务器上,因此一直使用MobaXterm利用SSH远程跑实验,但是MobaX ...

  3. Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?

    在 C/C++/Java 等等语言中,整型变量的自增或自减操作是标配,它们又可分为前缀操作(++i 和 --i)与后缀操作(i++ 和 i--),彼此存在着一些细微差别,各有不同的用途. 这些语言的使 ...

  4. 【Java】HashMap实现原理---数据结构

    作为一个程序猿,特别是Java后端的,应该全部人都用过HashMap,也都知道HaspMap是一个用于存储Key-Value键值对的集合.与此同时我们把每一个键值对也叫做 Entry. 而这些Entr ...

  5. Linux软件服务管理

    学习该课程之前先学习linux的软件安装管理 1.linux的运行级别有下面几种类型 在后面的服务启动管理之中会被使用到 [root@weiyuan httpd-2.4.20]# runlevel N ...

  6. Redis高级特性

    redis的事务(transaction) 转载:https://blog.csdn.net/fmwind/article/details/78065236 redis中的事务是一组命令的集合.事务同 ...

  7. React-Native WebView使用本地js,css渲染html

    前言 最近在使用React-Native开发一个App,遇见一个问题,Webview组件根据url来加载页面,但是这样导致的一个问题页面加载的时间有点长,我想优化一下,因为页面只要是一些内容展示,我想 ...

  8. 学习Java的Day05

    知识点 关键字,常用类(super,static,final): super 子类对父类的引用,只能在非静态方法中使用 引用父类的成员变量的格式为 super.成员变量名称 引用父类的非静态方法的格式 ...

  9. .NET 开源工作流: Slickflow流程引擎高级开发(七)--消息队列(RabbitMQ)的集成使用

    前言:工作流流程过程中,除了正常的人工审批类型的节点外,事件类型的节点处理也尤为重要.比如比较常见的事件类型的节点有:Timer/Message/Signal等.本文重点阐述消息类型的节点处理,以及实 ...

  10. 113资讯网——NGINX 502 Bad Gateway——解决方案

    NGINX 502 Bad Gateway错误出现的原因较多,对于后端连接PHP服务的场景下,常见的原因有php服务响应超时,php进程不足等引起的一类服务器错误. 发生原因: PHP FastCGI ...