小白学 Python(16):基础数据类型(函数)(上)

人生苦短,我选Python
前文传送门
引言
跟各位同学讲一个好消息,当你看到这篇连载的时候,整个 Python 基础内容部分已经过大半了。

希望各位同学再接再厉,努力把剩下的部分也看完。

函数
提到函数,没有接触过编程的同学会不会想到这个:
y = f(x)

但是,我们在 Python 中使用到的函数和数学中的函数没有半毛钱关系(额,可能稍微有点关系)。

在 Python 中,我们使用函数是为了简化问题,将同一类的操作定义为一个函数,在遇到相同的问题调用对应的函数,类似于 y = f(x) ,x = 1 的时候 y = 1 , x = 2 的时候 y = 2 。
所以,函数就是重复使用的代码。
定义函数
定义函数的规则如下:
- 函数代码块以 def 关键词开头。
- 后接函数名称和圆括号
()。 - 圆括号中可以使用参数。
- 函数内容以冒号起始,并且缩进。
- return 结束函数,可以选择性地返回一个值。不带 return 相当于返回 None。
定义一个函数大致长这样:
def 函数名(形式参数):
函数体
return 返回值
def 是系统关键字,至于什么是系统关键字后面我们再聊,这里仅需要知道 def 是用来定义函数的即可。
系统关键字在 PyCharm 中都会高亮显示,如果没有高亮,那么一定是你打错了。

比如我们现在定义一个求两数之和的函数:
def add(a, b):
c = a + b
return c
这个有看不懂的么?
没有的话我就接着往下聊了,有的话就给我留言吧。
以上我们就完成了一个函数的定义。
函数调用
函数定义好以后我们还需要调用函数才能执行,一个函数放在那里是不会自动执行的。
废话,我哪知道你要传什么参数过来。。。
我们调用一下刚才写好的函数:
c = add(1, 2)
print(c)
打印结果如下:
3
这里我们介绍两个名词:
- 实际参数:简称实参,我们刚才在调用函数的时候传入 1 和 2 就是实参。主要体现在实际执行函数的时候使用。
- 形式参数:简称形参,我们刚才在定义函数的时候
add(a, b)中的 a 和 b 就是形参。主要体现在它只是一个形式和格式,真正要执行的时候还是要看传入的实参。
整个函数调用就是将实参传递给形参,完成计算后返回,并且打印返回值。
Python 中有很多内置的函数,比如我们之前常用的 print() 、 len() 、 type() 、 id() 等等。
这些函数都是内置的,无需我们定义,所以可以直接拿来使用。
参数的传递
按照位置顺序传递
参数的传递有很多种方式,比如刚才我们调用时使用的就是按照位置顺序传递。
add(1, 2)
按照赋值传递
除了按照位置顺序传递,我们还可以按照赋值来传递:
这里我们先定义一个减法函数。
def subtraction(a, b):
return a - b
print(subtraction(b=5, a=10))
打印结果如下:
5
默认赋值
那么除了以上两种情况,还有没有其他情况?
当然还有,如果参数有两个,但是其中一个可能不会传递,这时我们可以给它一个默认值。
这里我们定义一个除法:
def division(a, b=1):
return a / b
print(division(5))
print(division(10, 5))
在除法中,除数不能为 0 ,不然会报错,这里我们给了一个默认值是 1 ,当除数不存在的时候,我们可以取到默认值。
结果打印如下:
5.0
2.0
变长度参数传递(元组)
这一块是难点,注意听,仔细看,看完细细品。
我们先定义一个打印的函数:
def print_a(a, b):
print(a, b)
这时我们可以打印出来 a 和 b ,但是如果我现在不止想打印两个参数了,我想打印 3 个参数,怎么办?
当然,我们可以给这个函数再加一个参数 c ,没问题:
def print_a(a, b, c):
print(a, b, c)
问题又来了,如果我想打印 100 个参数怎么办?
emmmmmmmmm,要么我们就加 100 个形参?

当然不是这么写啦,我们可以在参数 b 前面加一个 * ,表示这个参数是可变长参数,当前面的参数都赋值结束后,剩下的参数顺次给这个参数赋值。
def print_a(a, *b):
print(a, b)
print_a(1, 2, 3, 4, 5, 6)
输出结果如下:
1 (2, 3, 4, 5, 6)
看到没,这里剩余的参数被转换成了元组的形式进行了输出打印。
变长度参数传递(字典)
我们还可以给这个参数前面加两个 * ,表示这个参数可以传递的数据类型是以字典的形式传递的。
def print_b(a, **b):
print_a(a, b)
print_b(1, q='q', w='w', e='e')
打印结果如下:
1 ({'q': 'a', 'w': 'b', 'e': 'c'},)
当然,变长参数传递时,元组和字典也可以不存在,如下:
print_a(1)
print_b(1)
结果如下:
1 ()
1 ({},)
这时,打印出来的就是空元组和空字符串了。
希望各位同学一定要自己动手敲代码。
示例代码
本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。
小白学 Python(16):基础数据类型(函数)(上)的更多相关文章
- 小白学 Python(17):基础数据类型(函数)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(2):基础数据类型(上)
人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 接触一门新的语言,肯定要先了解它的基础数据类型.啥?你问我为啥要先了解基础数据类型? 为了你的生命安全,还是乖乖听我 B ...
- 小白学 Python(5):基础运算符(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(23):Excel 基础操作(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(9):基础数据结构(列表)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(14):基础数据结构(集合)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(3):基础数据类型(下)
人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 前面我们介绍过了数字,本篇我们接着聊另一个常用的基础数据类型:字符串. ...
- 小白学 Python(7):基础流程控制(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(12):基础数据结构(字典)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
随机推荐
- Flask基础(01)-->Flask框架介绍
什么是Flask? 说白了,Flask就是一种web框架 在python中常用的框架有 flask django tornado 什么又是web框架呢? 为什么要使用web框架呢? 增强扩展性和稳定 ...
- Angular 样式绑定
1. style.propertyName [style.Css属性名] = 'Css属性值变量'/"'css属性值'" // app.component.ts export cl ...
- 03-body标签中的部分标签
一.字体标签 标题标签h1-h6 h1定义最大的标题,h6定义最小的标题,一般一个页面中h1只能出现一次,尽量标题不要超过三级.h标签具有align属性,属性值分别是:left.center.righ ...
- Linux——服务器版本安装 (VMware)
一.Linux简介 Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网 ...
- git将当前分支上修改的东西转移到新建分支
比如我在A分支做了一些修改,现在由于某种原因(如A分支已经合并到master)不能把A分支上修改的东西保留下来但是需要把A分支上修改的东西继续在新分支继续修改.那么现在我们可以有两种简单的做法完成这一 ...
- elasticsearch http 搜索 测试
1.查询所有的documents http://192.168.43.45:9200/_search boost parameter 细粒度搜索条件权重控制 如:组装多个查询条件,其中一个匹配的想要优 ...
- Python PDB调试处理
pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了 ...
- 最近学到的Git知识,大厂的Git机制还是很方便的
本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git com ...
- Spring Security 自定义登录认证(二)
一.前言 本篇文章将讲述Spring Security自定义登录认证校验用户名.密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Se ...
- Git学习记录-基本命令篇
目录 网页在线练习地址 https://learngitbranching.js.org/ 1.git commit Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然 ...