---恢复内容开始---

为什么要有函数?

当你的老板要你写一个程序

 1 def 函数0():
2 # 如果cpu占用率>90
3 # 发送邮件
4 # 发出警报
5
6 def 函数1():
7 # 如果cpu占用率小于60大于90
8 # 发送邮件
9 # 发出警报
10 def 函数2():
11 # 如果cpu占用率小于60
12 # 发送邮件
13 # 发出警报

现在很多功能在重复,当有写部分需要重复许多便再去敲的话代码重复率就太高了而且代码堆在哪也难看啊

那么现在有两个问题,

  1.一个好的程序是要求我们简单明了的这么,这么多一样的堆在一起,更不适合别人看

  2.当你要修改代码的时候,你就要把所有的都改了,这样的话程序就太不合理了

所以必须改进

函数是什么?

函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

函数定义

1 def name ():
2 print()
3 return
4 # def +函数名+小括号+冒号
5 # 代码块
6 # 返回值

函数调用

1 name()

函数名加小括号就将函数调用一遍

带参函数:

1 def name (name):
2 print(name)
3 return
4
5 name("name")

仔细看此时括号里面的name就变成的一个变量可以引用

那么此时就称括号里的参数为新参

第五行括号里面的参数将会传进去那么此时称之为实参。

默认参数

 1 def stu_register(name,age,country,course):
2 print("----注册学生信息------")
3 print("姓名:",name)
4 print("age:",age)
5 print("国籍:",country)
6 print("课程:",course)
7
8 stu_register("王山炮",22,"CN","python_devops")
9 stu_register("张小小",21,"CN","linux")
10 stu_register("刘老根",25,"CN","linux")

那么此时将会按照顺序为其复制

  

stu_register(age=66,country='wocao')

这个是关键字赋值,注意关键字参数必须要在默认参数的后面

那么我们在来看一下非固定参数

def wocao(*args):
print(args) wocao('what','the','shit')

结果为

('what', 'the', 'shit')

将会打印一个列表

也就是说*args会将传入的值存储进入一个列表

那么还有一种非固定参数就是**kwargs

def wocao(*args,**kwargs):
print(args)
print('********')
print(kwargs) wocao('what','the','shit',name='curry',age=16,list_all=['what','the','fuck'])

好的现在我们来看一下结果会是怎么样

1 ('what', 'the', 'shit')
2 ********
3 {'name': 'curry', 'age': 16, 'list_all': ['what', 'the', 'fuck']}

结果显而易见了 当使用关键字传值时,**kwargs的作用是将没有的值作为一个字典储存起来。

返回值return

1 def wocao(*args,**kwargs):
2 return kwargs
3 # 我们来做一个数据接收他看看效果
4 data=wocao('what','the','shit',name='curry',age=16,list_all=['what','the','fuck'])
5 print(data)

结果是这样的

{'name': 'curry', 'age': 16, 'list_all': ['what', 'the', 'fuck']}

也就说我们将kwargs作为这个函数的返回值传了出来 如果我定义了一个变量接收

那么返回结果就将被这个函数接收

---恢复内容结束---

python之路 《六》函数的更多相关文章

  1. Python之路-函数

    一.函数是什么: python中函数定义:函数是逻辑结构化和过程化的一种编程方法.定义函数的方法为: def function(): ""The function definiti ...

  2. python之路——函数进阶

    阅读目录   楔子 命名空间和作用域 函数嵌套及作用域链 函数名的本质 闭包 本章小结 楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x> ...

  3. 百万年薪python之路 -- 函数的动态参数

    1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...

  4. Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数

    一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...

  5. python之路函数

    1.函数参数,引用 2.lambda表达式 lambda表达式 f1 = lambda a1,a2: a1+a2 3.python的内置函数 abs(),绝对值 all(),循环参数,如果每个元素都为 ...

  6. 百万年薪python之路 -- 函数名的第一类对象及使用

    函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 1.1.函数名的内存地址 def func(): print("呵呵") print(func) 结果: ...

  7. 百万年薪python之路 -- 函数的动态参数练习

    1.继续整理函数相关知识点. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*args,**kwargs): num_sum = 0 num_dic = [] num ...

  8. 百万年薪python之路 -- 函数初始

    1.函数 1.1 认识函数 定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数 函数:对代码块和功能的封装和定义 函数的好处: 减少代码的重复性 代码可读性高 将功能进 ...

  9. 百万年薪python之路 -- 函数初始练习

    1.整理函数相关知识点 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def func(lst): lst = lst[1::2] return l ...

  10. 09-Python之路---函数进阶

    Python之路---函数进阶️ 程序员三大美德: 懒惰 因为一直致力于减少工作的总工作量. 缺乏耐性 因为一旦让你去做本该计算机完成的事,你将会怒不可遏. 傲慢 因为被荣誉感冲晕头的你会把程序写得让 ...

随机推荐

  1. snappy压缩/解压库

    snappy snappy是由google开发的压缩/解压C++库,注重压缩速度,压缩后文件大小比其它算法大一些 snappy在64位x86并且是小端的cpu上性能最佳 在Intel(R) Core( ...

  2. java安全编码指南之:Thread API调用规则

    目录 简介 start一个Thread 不要使用ThreadGroup 不要使用stop()方法 wait 和 await 需要放在循环中调用 简介 java中多线程的开发中少不了使用Thread,我 ...

  3. MySQL数据库安装后的安全设置

    导语: 已经通过报的方式安装了mysql,装完之后有些安全设置必须要做. 装完以后数据库已经可以使用了,但是有安全风险. 风险在访问数据库不需要任何信息就可以访问. [10:17:02 root@C8 ...

  4. springboot入门系列(二):SpringBoot整合Swagger

    上一篇<简单搭建SpringBoot项目>讲了简单的搭建SpringBoot 项目,而 SpringBoot 和 Swagger-ui 搭配在持续交付的前后端开发中意义重大,Swagger ...

  5. ucore操作系统学习(三) ucore lab3虚拟内存管理分析

    1. ucore lab3介绍 虚拟内存介绍 在目前的硬件体系结构中,程序要想在计算机中运行,必须先加载至物理主存中.在支持多道程序运行的系统上,我们想要让包括操作系统内核在内的各种程序能并发的执行, ...

  6. MySQL关于月份日期的操作

    #获取当前日期 SELECT CURDATE(); #获取本月最后一天 SELECT LAST_DAY(CURDATE()); #获取本月的第一天 SELECT DATE_ADD(CURDATE(), ...

  7. buuctf-misc 菜刀666

    解压出一个666666.pcapng的文件,我们拖进wireshark 因为是菜刀吗?一般都是post连接,于是我们过滤post数据 http.request.method==POST 然后分析流量, ...

  8. Solr入门-Solr服务安装(windows系统)

    安装Solr 首先保证已经正确安装了Java 下载Solr,当前最新版6.1.0 Solr各个版本下载地址 Solr从6.0之后需要Java1.8所以如果使用Solr6.0及其以上版本,请确保Java ...

  9. js-同步和异步

    js异步 学习js开发,无论是前端开发还是node.js,都避免不了要接触异步编程这个问题,就和其它大多数以多线程同步为主的编程语言不同,js的主要设计是单线程异步模型.正因为js天生的与众不同,才使 ...

  10. Linux开机启动顺序启动顺序及配置开机启动

    Linux:开机启动顺序启动顺序及配置开机启动 开机启动顺序 1.加载内核 2.启动 init(/etc/inittab) pid=1 3.系统初始化 /etc/rc.d/rc.sysinit 4.运 ...