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时 ...
随机推荐
- cocos2dx打飞机项目笔记六:GameScene类和碰撞检测 boundingbox
GameScene类虽然是占用游戏最多时间的类,但是里面的东西不是很多,最重要的就是碰撞检测了,碰撞检测代码如下: void GameScene::detectionCrash() { CCArray ...
- INSPIRED启示录 读书笔记 - 第6章 招聘产品经理
产品经理应有的特质 个人素质和态度:技术可以学习,素质却难以培养,有些素质是成功的产品经理必不可少的 对产品的热情:对产品有一种本能的热爱,是夜以继日克服困难.完善产品的动力 用户立场:能换位思考,能 ...
- 使用Properties读写属性文件
import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; /*Prop ...
- java实现二进制的加法
先看打印结果在看代码比较好理解.结果在最下面的位置. 总结:讲解了二进制的按位异域.按位与.左移的运算规则.并通过次3种算法得到2个数相加的结果.二进制应该还有其他算法,由于知识浅薄就不知道了. 代码 ...
- Ant入门
一.Ant介绍 Ant是Java的生成工具,是Apache的核心项目:直接在apache官网下载即可: Ant类似于Unix中的Make工具,都是用来编译.生成: Ant是跨平台的,而Make不能: ...
- 美化tp5.1跳转提示
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- jQuery ajax 标准写法及进度条绘制
jQuery ajax 标准写法及进度条绘制 $.ajax({ url: "http://www.microsoft.com", //请求的url地址 dataType: &quo ...
- tensorflow实现Minist手写体识别
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #下载MINIST数据集mnist ...
- mysql中使用instr替换like
使用内部函数instr,可代替传统的like方式查询,并且速度更快. instr函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0. 实例: SELECT o. ...
- python中的SMTP发送邮件
一. 介绍 python3中自带了smtplib模块和email模块 smtplib模块:负责与邮件服务器的交互 email模块:负责组织邮件内容 二. smtplib模块 smtplib模块:主要是 ...