python中函数定义之实参、形参
一般在函数的定义中,会有一类变量---形参,它是函数完成其工作的一项信息。实参往往是调用函数时传递给函数的信息。我们在调用函数时,将要让函数使用的信息放在括号内。例如定义一个函数def greet_user(username):,在调用greet_user('jeese')中,将实参'jeese'传递给了函数greet_user(),这个值被存储在形参username中。
传递实参有很多种方式,下面了解一下他们。
1、位置实参
在调用函数时,每个实参要与定义中的形参关联起来。最简单的关联方式就是基于实参的顺序,这种关联方式就叫做位置实参。实参的顺序要与定义中的形参顺序一致。
def describe_pet(animal_type,pet_name):
print('\nI have a '+animal_type+'.')
print('My '+animal_type+"'s name is "+pet_name.title()+'.') describe_pet('hamster','harry')
在调用describe_pet()函数时,要按照形参的顺序提供一个动物的类型和一个名字。。平时根据需要可以多次调用。
运行结果:
I have a hamster.
My hamster's name is Harry.
如果调用函数中给出的实参顺序和定义中的形参不同,就会出现令人啼笑皆非的结果。如下:
describe_pet('harry','hamster') I have a harry.
My harry's name is Hamster.
这种情况的出现就是实参顺序不正确,按照这种方式,实参‘harry’会被存储到形参animal_type中;同理,'hamster'将存储到形参pet_name中,结果就是我们得到了上面的名为Hamster的harry。
所以切记,位置实参一定要与形参顺序一致。
2、关键字实参
关键字函数实参是传递给函数的名称-值对。关键字实参让你无需考虑函数调用中的实参顺序,还能明确各个值的用途,得到的结果是一样的。
describe_pet(animal_type='hamster',pet_name='harry')
describe_pet(pet_name='harry',animal_type='hamster') I have a hamster.
My hamster's name is Harry.
3、默认值
在函数定义编写的时候,可以给形参指定默认值。当在调用函数中给形参提供了实参时,python将使用指定的实参值,否则就是使用默认的形参值。使用形参给定的默认值时,调用函数时可以省略相应的实参。
def describe_pet(pet_name,animal_type='dog'):
print('\nI have a '+animal_type+'.')
print('My '+animal_type+"'s name is "+pet_name.title()+'.') describe_pet('willie')
运行结果:
I have a dog.
My dog's name is Willie.
这个函数的编写改变了形参的顺序,由于带有默认值的animal_type不需要在函数调用中指定类型,因此函数只涉及到pet_name需要给出名字。鉴于python依然将该实参认为是位置实参,若需要给出函数名字,则这个名字的实参将关联到函数定义中的第一个形参,故而将带默认值的形参放在后面。
若函数调用中,给animal_type重新赋了新的值,则原来的默认值即可忽略。
python中函数定义之实参、形参的更多相关文章
- python中函数定义与调用顺序问题
def main(): try: mtd(3) except Exception as e: print("程序出现异常:", e) mtd(3) def mtd(a): if a ...
- python中函数的定义和详细的使用方法
1. 函数的概念,函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 2. 函数的作用,使用函数可以加强代码的复用性,提高程序编写的效率 3. 函数的使用,函数必须先创建才 ...
- python中函数的定义及调用
python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...
- Python中函数的定义必须在调用的前面
# -*- coding:utf-8 -*- Python中函数的定义必须在调用的前面,但是在函数的内部调用一个函数,不用考虑顺序,只要被调用的函数被定义了即可 #标准的先函数定义,后函数调用def ...
- python 中函数的参数
一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...
- python 中函数参数传递形式
python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...
- python中函数的参数解析
python中函数的各种参数梳理: 1.形参:函数定义时传入的参数 2.实参:函数调用时传入的参数 (有形参必传实参,形参里自身特点可不传的,可传可不传) 3.缺省参数:不传为默认值,传了会覆盖(下面 ...
- python中函数的参数
函数参数(一) 思考一个问题,如下: 现在需要定义一个函数,这个函数能够完成2个数的加法运算,并且把结果打印出来,该怎样设计?下面的代码可以吗?有什么缺陷吗? def add2num(): a = 1 ...
- python中函数参数传递的几种方法
转自 http://www.douban.com/note/13413855/ Python中函数参数的传递是通过“赋值”来传递的.但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题 ...
随机推荐
- PJzhang: github与出口管制·说明条款
猫宁!!! 参考链接:https://www.infoq.cn/article/KMl2EO*PSMxIkVREiYvC https://help.github.com/en/articles/git ...
- bzoj1492 [NOI2007]货币兑换Cash【cdq分治】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1492 推荐博客:http://www.cnblogs.com/zig-zag/archive ...
- 洛谷 P3957 跳房子
https://www.luogu.org/problemnew/show/P3957 错误记录:1.没开longlong 2. -inf不够小 #include<cstdio> #inc ...
- 1049 - Deg-route
http://www.ifrog.cc/acm/problem/1049 这些数学题我一般都是找规律的.. 先暴力模拟了前面的那些,然后发现(x, y) = (x, y - 1) + (x - 1, ...
- SpringBoot项目取消数据库配置
1. 错误springboot项目启动时,如果没有配置数据库配置,启动时会抛出如下异常. Description: Cannot determine embedded database driver ...
- springmvc 实现原理与struts2原理的区别
spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. spring mvc是基于方法的设计,sturts2是基于类设计的. springmvc将ur ...
- php中3DES加密技术
因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下. 在网上也找了好多,但是都不可以用,没法正式运行,终于找到一个可以运行的,自己又修改了一下,记录下来,以后还可能会用 ...
- ACM学习大纲(转)
1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...
- Java GUI 事件监听
现在使用的仍是AWT的事件模型.涉及到3类对象: Event Source:事件源,即事件发生所在的组件 Event:事件,封装了此次事件的相关信息 Event Listener:事件监听器,监听事件 ...
- CF1149A Prefix Sum Primes
思路: 质数一定是奇数.实现: #include <bits/stdc++.h> using namespace std; int main() { int n, t, x, y; whi ...