用“餐厅打包”的故事说明白Python里面的自定义函数
注:博主并非Python专业程序员,年龄12岁,Python龄不到1岁,才疏学浅,如有错误还请大佬指教! 希望能通过本专栏帮助到一些Python小白!
嗨~大家好!上篇博文咱们说了,万一有一些上万行才能实现的功能没有库,只能自己写了,那么如何简化咱们复制粘贴上万行的这个过程嘞?

函数是个啥?

呃,不要担心,函数其实就是我们去饭店吃饭,然后要求服务员打包。

不不不,就是这样的,至少在Python里是这样的。我们举例来说明。
| 标准名称 | 实际意义 |
|---|---|
| 函数 | 打包 |
| 函数里面的东西 | 打包的食物 |
如何定义函数
好了,先说这么多,来讲讲怎么定义一个函数。
def blablabla():
print('我就是函数的内容!欧耶!')
a = True
while a:
print('快快关注我!')
a = False
注意几点
1. 函数的命名规范
和变量一样~~
- 要让人能看懂。
- 函数名必须是英文字母,数字和下划线的结合,数字不能做变量名称的第一个字符,
- 变量名称也不能跟Python内置的东西(也就是内置的函数)重名。要不然Python同学又该糊涂了。
2. 标点符号
定义函数时必须遵守如下格式:
def 函数名():
并且函数的内部的代码必须缩进,如果忘记了缩进或者是把缩进删掉了,在那行前按下Tab键即可。

如何运行函数
很简单~
在定义好函数名以后就直接输入
函数名()
比如我的:blablabla()
运行结果就是:

切记:运行函数有且仅有这种方式!!
这时,你或许会发现一个问题。

没错,那么这个问题该怎么解决呢?

对,我们可以在括号里面加上一些东西,这些“东西”类似于变量,但又不是变量。这就好比什么呢?去打包的时候,你跟服务员说:

那么,怎么定义这种函数呢?走起~
如何定义有参数的函数
def blablabla(name):
print('我就是函数的内容!欧耶!')
a = True
while a:
print('快快关注我!',name)
a = False
只要在括号里加上可变元素的名称即可,运行也一样:
如何运行有参数的函数
blablabla('工具人001A')
运行就会得到:
我就是函数的内容!欧耶!
快快关注我! 工具人001A
注意常见几个BUG出没地
1. 你给了参数的地方,但运行时不给参数
反面教材:
def blablabla(name):
print('我就是函数的内容!欧耶!')
a = True
while a:
print('快快关注我!',name)
blablabla()
报错提示:


注:“可变元素”是非正式称呼,正式称呼为“参数”。
2. 反之,你给了参数,但是没给参数的地方
反面教材:
def blablabla():
print('我就是函数的内容!欧耶!')
a = True
while a:
print('快快关注我!',name)
a = False
blablabla('hhh')
报错提示:


注:“可变元素”是非正式称呼,正式称呼为“参数”。
如何定义与运行有多个参数的函数
嘿这就有意思了。其实就是用逗号分隔。
def all_about_you(name,sex,age,hobby):
print('wow, your name is',name,'and your sex is',sex,'and you are',age,'years old and you like',hobby)
all_about_you('xiaocao162020','boy',12,'writing Python')
这样运行就会得到:
wow, your name is xiaocao162020 and your sex is boy and you are 12 years old and you like writing Python
啊别管没有标点符号的问题哈,写着玩而已,这个也有几个bug,比如你给了3个可变元素地方,运行时只输入2个可变元素,或者反之。都会报错。下面给大家看另一种BUG,准确地说,不算BUG:
def all_about_you(name,sex,age,hobby):
print('wow, your name is',name,'and your sex is',sex,'and you are',age,'years old and you like',hobby)
all_about_you('writing Python','12','boy','xiaocao162020')
运行,没有报错,但是显示了:
wow, your name is writing Python and your sex is 12 and you are boy years old and you like xiaocao162020
翻译过来绝对笑死你:


为了保证不会这样,我们可以按顺序输入或者这样:
def all_about_you(name,sex,age,hobby):
print('wow, your name is',name,'and your sex is',sex,'and you are',age,'years old and you like',hobby)
all_about_you(hobby='writing Python',age='12',sex='boy',name='xiaocao162020')
有木有一种很亲切的感觉?
是的!咱们用Python操作文件那一篇的对于打开文件的代码正是:
file1 = open('blablabla.txt',encoding='utf-8',mode='r')
没错没错,正是你想的那样!open实际上是Python的一个内置函数!内置函数和自定义函数的运行方式完全一致!
好吧,这篇貌似该收尾了,有问题欢迎联系我哈~

用“餐厅打包”的故事说明白Python里面的自定义函数的更多相关文章
- python学习之--自定义函数:
Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...
- python怎么导入自定义函数
python 编程中经常需要调用自己定义的函数,在大型程序中自定义的函数一般会和main函数分开,这么主要讲下在不同文件下定义的函数怎么调用: 首先在有文件夹test_python文件夹下有main. ...
- Python基础(二)自定义函数
1.判断字符串,内容是否为数字 我们用python:xlrd读Excel内容时,本来只是输入的整数字,经常读出来的是float类型 我们需要自动转成整型,意思就是说,读出来的和我们输入的一样,但是,我 ...
- python 基础篇 自定义函数
多态 我们可以看到,Python 不用考虑输入的数据类型,而是将其交给具体的代码去判断执行,同样的一个函数(比如这边的相加函数 my_sum()),可以同时应用在整型.列表.字符串等等的操作中. 在编 ...
- Python学习教程(learning Python)--2.1 Python下自定义函数
在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆. 函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则 ...
- python的自定义函数
今天想把上次参考着网上教程写的scrapy爬虫改写成requests和beautifulsoup的普通爬虫,写着写着发现自己对python的自定义函数还不是太熟悉(自己TCL了.........流泪) ...
- Python中关于Lambda函数的使用总结
lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...
- python中常用的函数与库一
1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python中使用zip函数出现<zip object at 0x02A9E418>
在Python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方 ...
随机推荐
- k210 cpu、asm、rust、smpboot、ipi
介绍 k210的datasheet主要讲了与外设相关的内容,k210并不支持最新的完整的riscv指令集,而是实现了一部分.本文想要通过汇编来一点点摸索k210的寄存器,布局,mmu,缓存等结构 相关 ...
- BIO和NIO的基本用法和API讲解
1 BIO 可以理解为Blocking IO 是同步阻塞的IO,也就是说,当有多个请求过来的时候,请求会呈现为链状结构,遵循先进先出的原则 1.1 单线程版本 1.1.1 服务端 //服务端单线程处理 ...
- P16_发布-小程序的推广与运行数据的查看
协同工作和发布 - 发布上线 基于小程序码进行推广 相对于普通二维码来说,小程序码的优势如下: 在样式上更具辨识度和视觉冲击力 能够更加清晰地树立小程序的品牌形象 可以帮助开发者更好地推广小程序 获取 ...
- rosdep update 一直失败问题
1.排除网络问题 2.增加TIMEOUT的时间: 更改 /usr/lib/python2.7/dist-packages/rosdep2/下的三个文件sources_list.py.gbpdistro ...
- Dapr Workflow构建块的.NET Demo
Dapr 1.10版本中带来了最有亮点的特性就是工作流构建块的的发布,虽然是Alpha 阶段,可以让我们尽早在应用系统中规划工作流, 在使用Dapr的系统中更好的编写负责的分布式应用系统.Dapr 工 ...
- C++练习4 引用的定义与使用
使用 & 为变量和常量作为引用 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int oneInt ...
- javaEE(单元测试、反射、动态代理、xml)
单元测试 最小的功能单元编写测试代码,java针对方法,检查方法的正确性 JUnit单元测试框架 @Test注解 public class A { @Test public void a(){ ... ...
- MySQL数据类型补充
数据类型 整数数据类型 特殊说明: 对于整数类型,MySQL还支持在类型名称后面加小括号(M),而小括号中的M表示显示宽度,M的取值范围是(0, 255).int(M)这个M在字段的属性中指定了u ...
- ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
目录 建表 折叠 数据 算法 资料分享 参考文章 该引擎继承于MergeTree,并在数据块合并算法中添加了折叠行的逻辑.CollapsingMergeTree会异步的删除(折叠)这些除了特定列Sig ...
- cximage函数总结(拷贝)
链接: https://blog.csdn.net/flame_007/article/details/89293140 http://t.zoukankan.com/lidabo-p-69233 ...