python之路 《六》函数
---恢复内容开始---
为什么要有函数?
当你的老板要你写一个程序
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之路 《六》函数的更多相关文章
- Python之路-函数
一.函数是什么: python中函数定义:函数是逻辑结构化和过程化的一种编程方法.定义函数的方法为: def function(): ""The function definiti ...
- python之路——函数进阶
阅读目录 楔子 命名空间和作用域 函数嵌套及作用域链 函数名的本质 闭包 本章小结 楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x> ...
- 百万年薪python之路 -- 函数的动态参数
1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...
- Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数
一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...
- python之路函数
1.函数参数,引用 2.lambda表达式 lambda表达式 f1 = lambda a1,a2: a1+a2 3.python的内置函数 abs(),绝对值 all(),循环参数,如果每个元素都为 ...
- 百万年薪python之路 -- 函数名的第一类对象及使用
函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 1.1.函数名的内存地址 def func(): print("呵呵") print(func) 结果: ...
- 百万年薪python之路 -- 函数的动态参数练习
1.继续整理函数相关知识点. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*args,**kwargs): num_sum = 0 num_dic = [] num ...
- 百万年薪python之路 -- 函数初始
1.函数 1.1 认识函数 定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数 函数:对代码块和功能的封装和定义 函数的好处: 减少代码的重复性 代码可读性高 将功能进 ...
- 百万年薪python之路 -- 函数初始练习
1.整理函数相关知识点 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def func(lst): lst = lst[1::2] return l ...
- 09-Python之路---函数进阶
Python之路---函数进阶️ 程序员三大美德: 懒惰 因为一直致力于减少工作的总工作量. 缺乏耐性 因为一旦让你去做本该计算机完成的事,你将会怒不可遏. 傲慢 因为被荣誉感冲晕头的你会把程序写得让 ...
随机推荐
- [CISCN2019 华北赛区 Day2 Web1]Hack World 1详解
打开题目, 我们开始尝试注入, 输入0回显Error Occured When Fetch Result. 输入1回显Hello, glzjin wants a girlfriend. 输入2回显Do ...
- bootStrap小结3
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- Eclipse JSP +Tomcat 环境搭建 错误记录
环境搭建请参考原文:https://www.cnblogs.com/james-lee/p/5964238.html 错误1:运行时,弹出如下错误:(如果没有此错误,请忽略) 原因是,我们之前点击了T ...
- .NET Core开源任务调度平台ScheduleMaster上新了
ScheduleMaster上一次比较大的更新还是在6月份,转眼已经快过去4个月了,这段时间比较忙,中间只更新过一次修复了几个小bug.要总结这次更新的话,必须要用"千呼万唤始出来" ...
- python 微信小程序自动化
微信小程序自动化 https://www.cnblogs.com/yyoba/python27 - FautoTesthttps://www.cnblogs.com/yyoba/p/9973731.h ...
- 如何快速在vscode配置C/C++环境
目录 1.卸载重装vscode 2.下载vscode 3.下载MinGW 4.配置环境变量 5.配置c/c++环境 6.超完整的配置文件 7.常用扩展推荐 8.注意 9.后记 相信许多刚开始使用vsc ...
- 从零造就JVM大牛(一)
引言 从事java的小伙伴大家好,如果你是一名从事java行业的程序员,无论你是小白还是工作多年的老司机,我相信这篇文章一定会给你带来 不同程度的收货不敢说你看完我的文章从此精通jvm打遍天下无对手, ...
- MFiX做增量编译的时候不要删掉*.mod和*.inc文件
其实之前发现了这个问题,但是没有记录,过了好久又忘了.具体问题是,在做增量编译的之前,都会习惯性地删除多余文件再编译,随手就把*.mod和*.inc这类中间文件也删了,结果修改完代码执行 make - ...
- MySQL全面瓦解4:数据定义-DDL
前言 SQL的语言分类主要包含如下几种: DDL 数据定义语言 create.drop.alter 数据定义语言 create.drop.alter 语句 . DML 数据操纵语言 insert.de ...
- Luogu P5307 [COCI2019] Mobitel
题意 有一个 \(r\times c\) 的矩阵 \(a\),矩阵的每个位置都有一个正整数,求从左上角走到右下角并且满足路径上数字乘积之和大于 \(n\) 的方案数. \(\texttt{Data R ...