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中使用不同编码读写txt文件详解
May 28 Python
Python读写文件方法总结
Jun 09 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
Python 打印中文字符的三种方法
Aug 14 Python
Python实现常见的回文字符串算法
Nov 14 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
python将字典内容写入json文件的实例代码
Aug 12 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 ajax 分页类代码
2008/11/13 PHP
php zend 相对路径问题
2009/01/12 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
js比较日期大小的方法
2015/05/12 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
使用python实现扫描端口示例
2014/03/29 Python
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
python中os模块详解
2016/10/14 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Python基于locals返回作用域字典
2020/10/17 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
小学生环保倡议书
2014/05/15 职场文书
体育运动口号
2014/06/09 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
初二数学教学反思
2016/02/17 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
JAVA API 实用类 String详解
2021/10/05 Java/Android