定义函数

函数不会改变某一个功能的代码, 函数只是将这个功能的代码封装起来, 方便后续调用.

# 基本结构
def 函数名(参数):
'''文档注释, 函数功能的描述'''
代码块 # 需要注意的是函数定义阶段, 只检测语法, 不执行代码 def max_2():
'''给定两个数, 打印较大的数'''
x = 10
y = 20
if x > y:
print(x)
else:
print(y) # 函数名.__doc__方法可查看函数的文档注释
print(max_2.__doc__) # 给定两个数, 打印较大的数

定义函数的三种形式

空函数

def func():
pass

有参函数

def max_2(x, y):
'''打印较大的数'''
if x > y:
print(x)
else:
print(y)

无参函数

def max_2():
'''给定两个数, 打印较大的数'''
x = 10
y = 20
if x > y:
print(x)
else:
print(y)

函数的调用

def max_2(x, y):
'''打印较大的数'''
if x > y:
print(x)
else:
print(y) # 使用函数名加括号即可调用函数
# 有参函数调用时必须传入相应数量的参数
max_2(20, 10) # 20

函数的返回值

def max_2(x, y):
'''打印较大的数'''
if x > y:
print(x)
else:
print(y) retur = max_2(20, 10)
print(retur) # None # 注意, 原函数只进行了结果打印, 函数本身并未返回任何值, 因此我们打印retur结果为None def max_2(x, y):
'''打印和返回较大的数'''
if x > y:
print(x)
return x
else:
print(y)
return y retur = max_2(20, 10)
print(retur) # 20 # 我们将原函数进行简单的改造, 加入return, 现在我们打印retur会显示函数的返回值 # return有如下几个特性:
# 1. return可以返回一个个值, 没有返回值则返回None
# 2. 没有return则返回None
# 3. return会终止函数, 不会运行下面的代码
# 4. return可以返回多个值(通过逗号隔开), 返回值以元祖的形式接受

函数的参数

形参 (parameter)

函数定义阶段时括号内设置的参数, 相当于一个变量名, 可以接收被传入的值

实参(argument)

实参是在函数调用阶段传给函数(形参)的一个具体的值, 相当于变量值, 可以为所有数据类型

# 函数定义
def max_2(x, y): # x, y 即为形参
'''打印较大的数'''
if x > y:
print(x)
else:
print(y) # 函数调用
max_2(10, 20) # 10, 20 即为实参

位置形参与位置实参

当函数定义阶段时设置了多个形参时, 则调用函数时也必须依次传入对应数量的实参, 我们把按照从左到右的排列, 一一对应的形参和实参称为位置形参和位置实参

# 函数定义
def max_2(x, y): # x, y 即为位置形参
'''打印较大的数'''
if x > y:
print(x)
else:
print(y) # 函数调用
max_2(10, 20) # 10, 20 即为位置实参

默认形参

默认形参既在函数定义阶段就已经给形参设定了一个默认值

def max_2(x, y = 10):  # y 即为默认形参, 默认形参必须在位置形参的后面
'''打印较大的数'''
if x > y:
print(x)
else:
print(y) # 函数调用阶段仍能给默认形参传值, 如果没有给默认形参传值,即为默认值
max_2(20) # y = 10
max_2(20, 30) # y = 30

关键字实参

关键字实参即为在函数调用阶段, 按照形参名(关键字)给形参传值

def max_2(x, y):
'''打印较大的数'''
if x > y:
print(x)
else:
print(y) # 函数调用
max_2(y=10, x=20)
max_2(10, y=20) # 关键字实参必须在位置实参的后面, 否则会报错
max_2(10, x=20) # 报错,x被多次赋值

Python3 函数基础1的更多相关文章

  1. Python3 函数基础2

    目录 可变长参数 可变长形参: *args 可变长实参: *容器类 可变长形参: **kwargs 可变长实参: **字典 函数对象 引用 当做容器类型元素 当做参数传给一个函数 当做函数的返回值 函 ...

  2. Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)

    字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...

  3. python开发基础之字符编码、文件处理和函数基础

    字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...

  4. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  5. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  6. JavaScript 函数基础

    1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call   : 将函数作为对象的 ...

  7. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  8. 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归

    一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...

  9. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

随机推荐

  1. PHP Laravel-包含你自己的帮助函数

    你可能想创建一个在应用的任何地方都可以访问的函数,这个教程将帮你实现

  2. 4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了)

    你好,我是彤哥,本篇是netty系列的第四篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们一起学习了Java中的BIO/NIO/AIO的故事,本章将带着大家一起使 ...

  3. nyoj 14-会场安排问题 (贪心)

    14-会场安排问题 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:9 submit:15 题目描述: 学校的小礼堂每天都会有许多活动,有时间这些活动 ...

  4. 从0开始学前端(笔记备份)----HTML部分 Day2 HTML表格表单

  5. vue项目中使用百度统计

    统计有多少人访问了自己的网站(wap端pc web端都适用),或者更细的统计网站每个页面的访问量,可以使用百度统计 百度统计传送门 按提示注册登录即可 登录后-->管理-->新增网站,配置 ...

  6. css 给div添加滚动并隐藏滚动条

    在html中 <div class="box"> <div>下面内容会单独滚动</div> <div class="scroll ...

  7. 你不知道的setTimeout第三个参数

    你不知道的setTimout第三个参数 说起setTimeout,各位再熟悉不过,用法也很简单:setTimeout(fun, delay). 但说起来你可能不信,用了这么多年的setTimeout居 ...

  8. 【前端】之jQuery基础知识

    jQuery 简介 在项目中引入jQuery: 去jQuery官网下载jQuery包:jquery-3.2.1.min.js 将下载的jQuery包添加到项目目录中 在标签下添加jQuery引用:&l ...

  9. kubeadm join 超时报错 error execution phase kubelet-start: error uploading crisocket: timed out waiting for the condition

    解决: swapoff -a kubeadm reset systemctl daemon-reload systemctl restart kubelet iptables -F && ...

  10. 八大机器学习框架对比及Tensorflow的优势

    八大机器学习框架的对比: (1)  TensorFlow:深度学习最流行的库之一,是谷歌在深刻总结了其 前身 DistBelief 的经验教训上形成的:它不仅便携.高效.可扩 展,还能再不同计算机上运 ...