Day3-Python基础3--函数参数及调用
一、return返回值
return的两个作用:
1)需要用一个变量来接受程序结束后返回的结果
2)它是作为一个结束符,终止程序运行
def test():
print("我是return前的命令")
return 0
print("我是return后的命令") x = test()
print(x) #输出
我是return前的命令
0 #结果返回值
从上面的代码可以看出,return 0 后面的代码停止执行了,程序只打印了return前面的代码,而函数的返回值0复制给
了变量x。
二、函数参数与局部变量
在此之前,我们演示的函数都是没有带参数的,下面我们就来说说带参数的函数。在讲之前,我们先来说一下,什么是形参,什么是实参吧!
- 形参:指的是形式参数,是虚拟的,不占用内存空间,形参单元只有被调用的时才分配内存单元
- 实参:指的是实际参数,是一个变量,占用内存空间,数据传递单向,实参传给形参,形参不能传给实参
代码如下:
def test(x,y): #x,y是形参
print(x)
print(y) test(1,2) #1和2是实参
#输出
1
2
1、位置参数
从上面的例子可以看出,实际参数和形式参数是一一对应的,如果调换位置,x和y被调用的时,位置也会互换,代码如下:
def test(x,y):
print(x)
print(y)
print("--------互换前-----")
test(1,2)
print("--------互换后-----")
test(2,1) #输出
--------互换前-----
1
2
--------互换后-----
2
1
在实参数>虚参数的时候,会因为参数不对应报错:
def test(x,y):
print(x)
print(y)
print("--------多一个参数----")
test(1,2,3) #输出
--------多一个参数----
Traceback (most recent call last):
File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>
test(1,2,3)
TypeError: test() takes 2 positional arguments but 3 were given #test()函数需要传两个实参,你传了三个实参
同理,当实参数<虚参数的时候,也会因为参数不对应报错:
def test(x,y):
print(x)
print(y)
print("--------少一个参数----")
test(1) #输出
--------少一个参数----
Traceback (most recent call last):
File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>
test(1)
TypeError: test() missing 1 required positional argument: 'y' #没有给y参数传实参
2、关键字参数
关键字传参不需要一一对应,只需要你指定你的哪个形参调用哪一个实参即可,代码如下:
def test(x,y):
print(x)
print(y) print("--------互换前------")
test(x=1,y=2)
print("--------互换后------")
test(y=2,x=1) #输出
--------互换前------
1
2
--------互换后------
1
2
位置参数与关键字参数结合:
1)位置参数在前,关键字参数在后。
def test(x,y):
print(x)
print(y) test(1,y=2) #输出
1
2
2)但是下面这种情况是错误的。这时候形参由于赋值过多,不能多次
def test(x,y):
print(x)
print(y) test(1,x=2) #输出
Traceback (most recent call last):
File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>
test(1,x=2)
TypeError: test() got multiple values for argument 'x' #给x形参传的值过多
3)关键字参数在前,位置参数在后
def test(x,y):
print(x)
print(y) test(y=2,1) #输出
File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8
test(y=2,1)
^
SyntaxError: positional argument follows keyword argument # 关键字参数在位置参数的前面
4)一个位置参数,两个关键字参数
def test(x,y,z):
print(x)
print(y)
print(z) test(1,z=2,y=3) #输出
1
3
2
总结:关键字参数是不能写在位置参数前面的
Day3-Python基础3--函数参数及调用的更多相关文章
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- python基础之函数参数,名称空间,以及函数嵌套
函数进阶内容梗概: 1. 函数参数--动态传参 2. 名称空间, 局部名称空间, 全局名称空间, 作⽤用域, 加载顺序. 3. 函数的嵌套 4. gloabal , nonlocal 关键字 1. 函 ...
- python基础之函数参数、嵌套、返回值、对象、命名空间和作用域
函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...
- Python基础之函数参数与返回值进阶
参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部: 返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值. 函数的返回值 进阶 利用元 ...
- Day3 - Python基础3 函数基本、递归函数、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 2.2. 函数变量作用域 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1. 函数基本语法及 ...
- python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件
上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...
- Python基础之函数参数
一.实参 1.实参分类: 2.实参基础代码: def fun01(a, b, c): print(a) print(b) print(c) # 位置传参:实参与形参的位置依次对应 fun01(1, 2 ...
- Python基础_函数闭包、调用、递归
这节的主要内容是函数的几个用法闭包,调用.递归. 一.函数闭包 对闭包更好的理解请看:https://www.cnblogs.com/Lin-Yi/p/7305364.html 我们来看一个简单的例子 ...
- python基础知识06-函数基础和函数参数
函数基础和函数参数 可迭代对象:序列类型 range . 1.函数的定义 def 函数名(参数): pass return 表达式 ,不能是赋值语句.不写默认返回None.用逗号隔开返回一个元组. 函 ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
随机推荐
- 进程控制块PCB结构体 task_struct 描述
进程控制块,英文名(Processing Control Block),简称 PCB . 进程控制块是系统为了管理进程设置的一个专门的数据结构,主要表示进程状态. 每一个进程都对应一个PCB来维护进程 ...
- JSP语法及内置对象
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动 ...
- Prometheus Monitoring System & Time Series Database
什么是 TSDB (Time Series Database): 我们可以简单的理解为.一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的. 时间序列数据库的特点: 大部分时间都 ...
- DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format) format参数的格式有 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的 ...
- java基础(2)-面向对象(1)
面向对象 面向对象思想 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为 面向对象:将功能封装进对象,强调具备了功能的对象 面向对象是基于面向过程的 面向对象举例 ...
- jQuery颜色面板插件
/** * jQuery颜色面板插件 * * 使用方法:input框的id默认为inputObj,button框的id默认为btnObj,也可以自定义aaa,bbb * 1.初始化颜色面板:$.col ...
- 关于series的统计
1.统计se中各个元素出现的次数: se.value_counts() 这个命令就非常重要!(df没有这个命令) 另外series转dict是to_dict(),注意与数组转list的tolist() ...
- 03_01_基本操作_增(insert)
1. 1.1.创建表 create table employee( id number primary key, name varchar2(64) not null, email varchar2( ...
- 项目开发之git配置
1.本地安装git配置 安装步骤,这里不详细介绍,软件下载然后安装即可. 查看git安装版本 #git --version 2.git密钥生成 ssh-keygen -t rsa -C "f ...
- v2.0 组件通信的总结
在vue.js现在比较流行,层出不穷的js框架越来越强调数据绑定,组件化开发. 正在给公司做一个管理后台,基本思路是编写几个通用组件,采用单页面应用的形式完成: 结构大致如下: mainVue lef ...