当前位置:首页 > 科技  > 软件

了解Python调用函数

来源: 责编: 时间:2023-10-26 17:10:51 362观看
导读哈喽,大家好,我是了不起。今天给大家带来python调用函数。一、定义函数与调用函数的顺序函数被定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。但是在 Python 中我们要注意一个关键点,就是Pyth

哈喽,大家好,我是了不起。今天给大家带来python调用函数。Vde28资讯网——每日最新资讯28at.com

Vde28资讯网——每日最新资讯28at.com

一、定义函数与调用函数的顺序

函数被定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。但是在 Python 中我们要注意一个关键点,就是Python不允许前向引用,即在函数定义之前,不允许调用该函数。Vde28资讯网——每日最新资讯28at.com

例如:Vde28资讯网——每日最新资讯28at.com

print plus(1,2)def plus(a,b):      return a+b  

运行结果为:Vde28资讯网——每日最新资讯28at.com

NameError: name 'plus' is not defined  

从报错结果可以看出,名字为plus的函数还没进行定义(虽然我们是在后面进行了定义)。所以当我们在调用函数时,一定要确定在调用之前进行了函数定义。Vde28资讯网——每日最新资讯28at.com

二、正确使用参数

我们要在调用函数时,需要正确调用函数的名称和参数,例如我们定义了一个加法函数:Vde28资讯网——每日最新资讯28at.com

def plus(a,b):      return a+b  

我们在调用plus()函数时,如果传入的参数类型不对,会报TypeError错误。而且有时我们传入的参数类型不是规定类型的话,就算调用函数运行结果没有报错,也会产生逻辑错误。Vde28资讯网——每日最新资讯28at.com

例如:Vde28资讯网——每日最新资讯28at.com

# 定义plus函数,作用是求两个正整数之和  def plus(a,b):      return a+b# 调用plus函数,参数类型为'1','2'  print(plus('1','2'))  

输出结果:Vde28资讯网——每日最新资讯28at.com

12  

虽然上述例子的程序运行结果没有报错,但是结果却与我们的预期不符,因为我们的本意是调用plus()加粗样式函数实现两个整数的加法。但是如果我们传入的是字符串类型的数值时,结果就是两个字符串的拼接。所以这个例子告诉我们一定要注意传入参数的类型。当我们传入正常类型的参数时,传入的参数个数不一致时,也会报TypeError错误。Vde28资讯网——每日最新资讯28at.com

例如:Vde28资讯网——每日最新资讯28at.com

# 定义plus函数,作用是求两个正整数之和  def plus(a,b):      return a+b# 调用plus函数,参数为1,2,3  print(plus(1,2,3))  

报错:Vde28资讯网——每日最新资讯28at.com

TypeError: plus() takes 2 positional arguments but 3 were given  

报错原因显示,因为plus()函数允许有且仅有2个参数,但是却在调用时传入了3个参数,所以程序报错。Vde28资讯网——每日最新资讯28at.com

三、函数与函数之间的调用

1. 第一种情况 程序代码如下:Vde28资讯网——每日最新资讯28at.com

def x(f):      def y():          print(1)      return ydef f():      print(2)x(f)  

运行结果:Vde28资讯网——每日最新资讯28at.com

无结果

分析:因为第9行中的x(f)中的f没有带括号,f只是一个普通的参数,所以程序只调用执行了x(f)函数,没有调用执行f()函数。x(f)函数中虽然也定义了y()函数,但是x(f)函数中没有调用执行y()函数,只是执行了return y。而y变量也没有值,所以整个程序的返回值就为无结果。Vde28资讯网——每日最新资讯28at.com

2. 第二种情况 程序代码如下:Vde28资讯网——每日最新资讯28at.com

def x(f):      def y():          print(1)      return ydef f():      print(2)x(f())  

运行结果:Vde28资讯网——每日最新资讯28at.com

2  

分析:因为第9行中的x(f())中的f()带括号,所以程序先调用执行f()函数,先输出2。然后2作为参数传入到x(f)函数中,程序开始调用执行x(f)函数。x(f)函数中虽然也定义了y()函数,但是x(f)函数中没有调用执行y()函数,只是执行了return y。而y变量也没有值,所以调用执行x(f)函数没有产生任何结果。因此该程序最终只输出了2。Vde28资讯网——每日最新资讯28at.com

3. 第三种情况 程序代码如下:Vde28资讯网——每日最新资讯28at.com

def x(f):      def y():          print(1)      return y()def f():      print(2)x(f)  

运行结果:Vde28资讯网——每日最新资讯28at.com

1

分析:因为第9行中的x(f)中的f没有带括号,f只是一个普通的参数,所以程序只调用执行了x(f)函数,没有调用执行f()函数。x(f)函数中也定义了y()函数,并且返回是y()函数。因此程序调用执行了y()函数,输出结果是1。Vde28资讯网——每日最新资讯28at.com

4. 第四种情况Vde28资讯网——每日最新资讯28at.com

def x(f):      def y():          print(1)      return y()def f():      print(2)x(f())

运行结果:Vde28资讯网——每日最新资讯28at.com

2  1  

分析:因为第9行中的x(f())中的f()带括号,所以程序调用执行了f()函数,先输出2。然后2作为参数传入到x(f)函数中,程序开始调用执行x(f)函数。x(f)函数中也定义了y()函数,并且返回是y()函数。因此程序也调用执行了y()函数,也输出了1。最终该程序先后输出了2和1。Vde28资讯网——每日最新资讯28at.com

5. 第五种情况 程序代码如下:Vde28资讯网——每日最新资讯28at.com

def x(f):      def y():          print(1)          print(f())      return y()def f():      #print(2)      return 2x(f)  

运行结果:Vde28资讯网——每日最新资讯28at.com

1  2  

分析:因为第9行中的x(f)中的f没有带括号,f只是一个普通的参数,所以程序只是先调用执行了x(f)函数。在x(f)函数中也定义了y()函数,而且返回值是y()函数,所以程序会调用执行y()函数。在y()函数中先是执行print(1)语句,输出1,接着执行print(f())语句,所以程序在这时也会调用执行f()函数,输出2。最终该程序先后输出了1和2。Vde28资讯网——每日最新资讯28at.com

好了,今天就介绍到这儿。Vde28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-15189-0.html了解Python调用函数

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 用Python实现答题卡识别!你学会了吗?

下一篇: 一个不太好用的 IDEA 代码生成插件

标签:
  • 热门焦点
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的“头腾
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了“本地生活”入口,位置较深,位于首页的“充值中心”内,目前主要售卖美食相关的
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
Top