人生苦短,我选Python

前文传送门

小白学 Python(1):开篇

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

小白学 Python(3):基础数据类型(下)

小白学 Python(4):变量基础操作

小白学 Python(5):基础运算符(上)

小白学 Python(6):基础运算符(下)

小白学 Python(7):基础流程控制(上)

小白学 Python(8):基础流程控制(下)

小白学 Python(9):基础数据结构(列表)(上)

小白学 Python(10):基础数据结构(列表)(下)

小白学 Python(11):基础数据结构(元组)

小白学 Python(12):基础数据结构(字典)(上)

小白学 Python(13):基础数据结构(字典)(下)

小白学 Python(14):基础数据结构(集合)(上)

小白学 Python(15):基础数据结构(集合)(下)

引言

跟各位同学讲一个好消息,当你看到这篇连载的时候,整个 Python 基础内容部分已经过大半了。

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

函数

提到函数,没有接触过编程的同学会不会想到这个:

y = f(x)

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

在 Python 中,我们使用函数是为了简化问题,将同一类的操作定义为一个函数,在遇到相同的问题调用对应的函数,类似于 y = f(x)x = 1 的时候 y = 1x = 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 上,方便大家取用。

示例代码-Github

示例代码-Gitee

小白学 Python(16):基础数据类型(函数)(上)的更多相关文章

  1. 小白学 Python(17):基础数据类型(函数)(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  2. 小白学 Python(2):基础数据类型(上)

    人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 接触一门新的语言,肯定要先了解它的基础数据类型.啥?你问我为啥要先了解基础数据类型? 为了你的生命安全,还是乖乖听我 B ...

  3. 小白学 Python(5):基础运算符(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  4. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  5. 小白学 Python(9):基础数据结构(列表)(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  6. 小白学 Python(14):基础数据结构(集合)(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  7. 小白学 Python(3):基础数据类型(下)

    人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 前面我们介绍过了数字,本篇我们接着聊另一个常用的基础数据类型:字符串. ...

  8. 小白学 Python(7):基础流程控制(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  9. 小白学 Python(12):基础数据结构(字典)(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

随机推荐

  1. MangoDB的下载和安装

    ​ 前面已经简单介绍了MongoDB,今天我们就要正式学习他了,话不多说,咱先来安装. 1.现在MongoDB已经到了4.0版本,咱先去官网下载,MongoDB官网传送门,下载的版本信息如下,点击Do ...

  2. gulp简单使用

    1.安装gulp,由于某些在下不能解决的原因,故使用gulp 3.9.1版本 安装命令: npm install gulp@3.9.1 注意不要直接使用 : npm install gulp 安装,直 ...

  3. Docker系列(一):容器监控工具Weave Scope安装

    项目进行容器化之后,配套的基础设施包括监控.编排.管理等都需要进行一并完善.这里也是自己一边学习一边进行记录. Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直 ...

  4. C# 读取控制台的Console.Write

    一个程序去调用另一个xxx.exe的时候,需要记录下这个exe里面的console.write的输出 public static string InvokeExcute(string Command) ...

  5. Redis对象——字符串

    文章导航-readme 前言     上一篇文章Redis之对象篇--Redis对象系统简介简单介绍了Redis的对象系统.Redis使用对象来表示数据库中的键和值每个对象都由一个redisObjec ...

  6. Java容器总结

    容器总结 Java容器工具包框架图 List,Set,Map三者的区别 List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性 ...

  7. 二、docker 镜像容器常用操作(让我们用docker 溜得飞起)

    前言 上篇讲了我们如何安装docker,现在该我们一展拳脚的时候了.接下来让我们一起学习一下docker常见的操作,让我们能够会使用 docker. 基本概念 在讲使用之前,还是先将一下docker ...

  8. Msfvenom命令总结大全

    1.    –p (- -payload-options) 添加载荷payload. 载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填 ...

  9. 后门免杀工具-Backdoor-factory

    水一水最近玩的工具 弄dll注入的时候用到的 介绍这款老工具 免杀效果一般..但是简单实用  目录: 0x01 backdoor-factory简介 0x02 特点功能 0x03 具体参数使用 PS: ...

  10. Powshell之基础语法

    记录一下关于Powershell的基础语法 变量 变量都是以$开头, 是强类型语言, 语言是大小写不敏感的 提一提变量保护与常量的声明:New-Variable num -Value -Force - ...