一、函数的返回值

1、什么是返回值
返回值是一个函数的处理结果,

2、为什么要有返回值
如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值

3、函数的返回值的应用
函数的返回值用return去定义
格式为:
return 值

注意:
1、return是一个函数结束的标志,函数内可以有多个return,
但只要执行一次,整个函数就会结束运行

2、return 的返回值无类型限制,即可以是任意数据类型
3、return 的返回值无个数限制,即可以用逗号分隔开多个任意类型的值
0个:返回None,ps:不写return默认会在函数的最后一行添加return None
1个:返回的值就是该值本身
多个:返回值是元组

二、函数调用

1 什么是调用函数
函数名(...)即调用函数,会执行函数体代码,直到碰到return结束或者一直运行完毕所有代码

2 为何要调用函数
用函数的功能

3、函数调用分为三种形式
max2(1,2)
res=max2(3000,2000) * 12
res=max2(max2(1000,2000),3000)

三、函数参数分类

总的分类:
 1、形参:在函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质就是变量名
 def foo(x,y): #x=1,y=2
 print(x)
 print(y)
2、实参:在函数调用阶段括号内传入的值,称之为实际参数,简称实参,本质就是变量的值
 foo(1,2)

详细的分类:
#一、位置参数:
位置形参:在函数定义阶段,按照从左到右的顺序依次定义的形参,称之为位置形参
特点:但凡是按照位置定义的形参,都必须被传值,多一个不行,少一个也不行
def foo(x,y):
print('x:',x)
print('y:',y)

位置实参:在函数调用阶段,按照从左到右的顺序依次定义的实参,称之为位置实参
特点:按照位置为对应的形参依次传值
 foo(1,2)
 foo(2,1)

二、关键字实参:在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参
特点:可以打破位置的限制,但仍能为指定的形参赋值
 foo(y=2,x=1)

注意:
1、可以混用位置实参与关键字实参,但位置实参必须放在关键字实参的前面
 foo(1,y=2)
 foo(y=2,1) #SyntaxError: positional argument follows keyword argument

2、可以混用,但不能对一个形参重复赋值
 foo(1,y=2,x=10)

三:默认参数:在函数定义阶段,就已经为形参赋值,该形参称为默认形参
#特点:在定义阶段就已经被赋值,意味着在调用可以不用为其赋值

# 注意:
#1、位置形参必须放到默认形参的前面,否则报语法错误

#2、默认参数的值只在定义阶段赋值一次,即默认参数的值在函数定义阶段就已经固定死了

#3、默认参数的值通常应该定义不可变类型

#总结:
#实参的应用:取决于个人习惯,
#形参的应用:
#1、位置形参:大多数情况下的调用值都不一样,就应该将该参数定义成位置形参
#2、默认形参:大多数情况下的调用值都一样,就应该将该参数定义成默认形参

四:可变长参数:指的是在调用函数时,传入的参数个数可以不固定
#而调用函数时,传值的方式无非两种,一种位置实参,另一种时关键字实参
#所以对应着,形参也必须有两种解决方案,来分别接收溢出的位置实参(*)与关键字实参(**)

#1、形参中某个参数带*
#形参中的*会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给*后的变量名

# 2、实参中的参数也可以带*
# 实参中带*,*会将该参数的值循环取出,打散成位置实参
#ps:以后但凡碰到实参中带*的,它就是位置实参,应该立马打散成位置实参去看

#注意:约定俗成形参中的*变量名的写法都是:*args

#1、形参中某个参数带**
#形参中的**会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给**后的变量名

2、实参中的参数也可以带**,该参数必须是字典
# 实参中带**,**会将该参数的值循环取出,打散成关键字实参
#ps:以后但凡碰到实参中带**的,它就是关键字实参,应该立马打散成关键字实参去看

#注意:约定俗成形参中的**变量名的写法都是:**kwargs

#五 命名关键字形参:在函数定义阶段,*后面的参数都是命名关键字参数(**)
# 特点:在传值时,必须按照key=value的传,并且key必须命名关键字参数指定的参数名

python基础之Day10的更多相关文章

  1. python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal

    一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args   **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...

  2. python 基础知识-day10(面向对象)

    1.面向对象的概念 拥有共同属性的一类进行归类的过程叫做面向对象. 2.注意事项 class定义类的时候,类名的首字母必须大写 3.面向对象案例 1 class Person(object): 2 d ...

  3. python基础一 day10(2)

    复习: # 三元运算符# 接收结果的变量 = 条件为真的结果 if 条件 else 条件为假的结果# 接收结果的变量 = “真结果” if 条件 else “假结果”## 命名空间 和 作用域# 三种 ...

  4. python基础一 day10(1)

    要背的:

  5. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  6. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  7. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  8. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  9. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

随机推荐

  1. [转].NET 性能测试工具 -- 事件跟踪器(ETW)

    .NET 性能测试工具 -- 事件跟踪器(ETW) 内容预告: Windows内置工具(性能计数器) 事件跟踪器(WPT,PerfMoniter,PerfView,自定义ETW) 时间分析 内存分配分 ...

  2. 不常用的vi命令

    vi u 撤回ctrl+r 撤回的撤回 全文替换%s/old/new/g 指定行区间替换12,15s/old/new/g c替换前确认12,15s/old/new/gc 用#代替分隔符,用户关键字有/ ...

  3. 分享一个生成反遗忘复习计划的java程序

    想必这个曲线大家都认识,这是遗忘曲线,展示人的记忆会随着时间的延长慢慢遗忘的规律,同时还展示了如果我们过一段时间复习一次对遗忘的有利影响. 道理大家都懂,关键怎么做到? 靠在本子上记下今天我该复习哪一 ...

  4. 减肥标准BMI指数

    原文: https://baike.baidu.com/item/BMI%E6%8C%87%E6%95%B0/4477882?fromtitle=%E4%BD%93%E9%87%8D%E6%8C%87 ...

  5. JOSN转列格式(csv文件)

    推荐网站 https://json-csv.com/ 限制1M大小

  6. 【产品设计】【转】APP界面设计规范编写指南(人人都是产品经理)

    转自 :http://www.woshipm.com/ucd/608557.html 作者:EID_UX_DESIGN,微信公众号:EID_center 原文地址:http://www.ui.cn/d ...

  7. C++学习基础十七-- 函数指针

    C++常用的函数指针 语法:返回值类型 (*函数名)(参数列表); 举例说明:int (*Func)(int m, int n); 用typedef简化函数指针的定义 例如: typedef int ...

  8. halcon分离路径名称

    用haclon程序将目录名分离的算法. ParseFileName:='F:/D705/4-20/缺陷/81.bmp' parse_filename(ParseFileName, BaseName, ...

  9. 什么是python的全局解释锁(GIL)

    GIL解决了Python中的什么问题? 为什么选取GIL作为解决方案? 对多线程Python程序的影响 为什么GIL还没有被删除? 为什么在Python 3 中GIL没有被移除? 如何处理Python ...

  10. setDaemon 守护线程

    setDaemon(True): 将线程声明为守护线程,必须在start() 方法调用之前设置, 如果不设置为守护线程程序会被无限挂起.这个方法基本和join是相反的. 当我们 在程序运行中,执行一个 ...