python函数声明和调用定义及原理详解


Posted in Python onDecember 02, 2019

这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

函数是指代码片段,可以重复调用,比如我们前面文章接触到的type()/len()等等都是函数,这些函数是python的内置函数,python底层封装后用于实现某些功能。

一.函数的定义

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回;如果没有return语句,默认返回None:

def functionname( parameters ):
  "函数说明"
  function_suite
  return [expression]

例如:写一个函数输出'hello world'

def cusom_print():
  print("hello world")

二.函数的调用

当在py文件中,代码一行一行执行,如果遇到函数的定义,编译器会自动跳过,执行函数之后的代码,如果想调用函数直接调用即可。

注意:函数在调用之前必须先声明。python中的内置函数如:print/type函数等等已经在python编译器内部声明并且定义好了,我们只管调用即可,不需要关心具体内部如何实现。示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com
 
@File:python_function.py
@Time:2019/10/3 10:48
 
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
def custom_print():
  print("hello world")
  print("hello world")
  print("hello world")
custom_print()

输出结果:

hello world
hello world
hello world

代码分析:代码执行到第15行时,编译器发现这是一个函数声明,编译器并不会执行,会自动跳到函数末尾第20行,编译器发现20行是在调用custom_print()函数,会直接进入custom_print()函数执行函数内的代码第16/17/18行直到函数结束,这就是整个运行过程。

三.函数传参

函数可以通过外部传递参数,比如:print()函数,可以直接传递字符串并打印字符串;也可以不传递参数,比如上面的custom_print函数,根据自己的需求而定.

函数声明的时候定义的参数叫做形参;外部调用函数传递的参数叫做实参;函数的参数有两者类型:

1.常规参数
常规而言,函数默认有几个形参,在外部调用时就需要传递多少个实参,示例代码如下:

def cusom_print1(x):
  print("cusom_print1 : x={}".format(x))
 
def cusom_print2(x,y):
  print("cusom_print2 : x={}".format(x))
  print("cusom_print2 : y={}".format(y))
 
def cusom_print3(x,y,z):
  print("cusom_print3 : x={}".format(x))
  print("cusom_print3 : y={}".format(y))
  print("cusom_print3 : z={}".format(z))
 
cusom_print1(1)
cusom_print2(1,2)
cusom_print3(1,2,3)

输出结果:

cusom_print1 : x=1
cusom_print2 : x=1
cusom_print2 : y=2
cusom_print3 : x=1
cusom_print3 : y=2
cusom_print3 : z=3

2.缺省参数

在函数参数中,除了常规参数还有缺省参数,即缺省参数有一个默认值,如果外部调用该函数没有给缺省参数传递参数,该形参直接取默认参数值;如果外部调用时给缺省参数传递了参数,那么该形参的值应该等于外部传递的参数,带有缺省参数的函数也被称为缺省函数,示例代码如下:

def cusom_print4(x,y=2,z=3): # x=2,z=3 缺省参数
  print("cusom_print4 : x={}".format(x))
  print("cusom_print4 : y={}".format(y))
  print("cusom_print4 : z={}".format(z))
  print("***"*20)
 
cusom_print4(1)
cusom_print4(1,4)
cusom_print4(1,4,3)

输出结果:

cusom_print4 : x=1
cusom_print4 : y=2
cusom_print4 : z=3
************************************************************
cusom_print4 : x=1
cusom_print4 : y=4
cusom_print4 : z=3
************************************************************
cusom_print4 : x=1
cusom_print4 : y=4
cusom_print4 : z=3
************************************************************

注意:

1.缺省参数都有一个默认值,如果外部没有给缺省参数传递参数,那么直接取默认值;否则等于外部传递的参数值

2.缺省参数必须写在函数形参的末尾

# 错误写法
def cusom_print4(x,y=2,z):
print("cusom_print4 : x={}".format(x))

3.不定长参数

除了上面两者,在函数的参数中还有一种不定长参数,即:函数的形参长度/类型都不固定

四.函数返回值return

函数的返回值可有可无,根据自己的使用需求而定。如果函数没有return返回值,默认会返回None,即空值。和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。

五.重点总结

1.函数的声明必须在调用之前,否则会报错.

2.注意缺省参数的参数写法

3.函数没有使用return,默认返回None

这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Python 相关文章推荐
python解析xml文件实例分享
Dec 04 Python
python的迭代器与生成器实例详解
Jul 16 Python
python调用API实现智能回复机器人
Apr 10 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
python实现随机梯度下降法
Mar 24 Python
python得到单词模式的示例
Oct 15 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
如何基于python生成list的所有的子集
Nov 11 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
python如何进行矩阵运算
Jun 05 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 Python
python return逻辑判断表达式实现解析
Dec 02 #Python
Python线程障碍对象Barrier原理详解
Dec 02 #Python
python 循环数据赋值实例
Dec 02 #Python
python创建n行m列数组示例
Dec 02 #Python
python 创建一维的0向量实例
Dec 02 #Python
python 初始化一个定长的数组实例
Dec 02 #Python
Python生态圈图像格式转换问题(推荐)
Dec 02 #Python
You might like
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python函数学习笔记
2008/10/07 Python
c++生成dll使用python调用dll的方法
2014/01/20 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
Python logging设置和logger解析
2019/08/28 Python
python实现扫雷小游戏
2020/04/24 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
总经理驾驶员岗位职责
2013/12/04 职场文书
洗发露广告词
2014/03/14 职场文书
春节联欢会主持词
2014/03/24 职场文书
横幅标语大全
2014/06/17 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
利用Python多线程实现图片下载器
2022/03/25 Python