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

为什么要有函数?

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

 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作为这个函数的返回值传了出来 如果我定义了一个变量接收

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

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

最新文章

  1. 【转载】VS2012的打包方法
  2. mysql 存储过程 死循环,如何关闭
  3. 如何安全地关闭MySQL实例
  4. Web 架构师的能力(转)
  5. unity meshrender理解
  6. git error
  7. JSP入门&会话技术
  8. 在Ubuntu中USB连接手机调试
  9. easy ui 异步上传文件,跨域
  10. ASP.NET服务器端控件(class0617)
  11. uva 10916 Factstone Benchmark(对数函数的活用)
  12. JS 正则表达式否定匹配(正向前瞻)
  13. 执行ANT JAVA三种方式
  14. VisualVM 分析full GC问题记录
  15. linux下oracle启动关闭
  16. sublime 官方正版,自己用的插件配置,最轻量级安装流程
  17. 13 python初学(函数)
  18. Java+selenium之WebDriver页面元素的操作(三)
  19. 【Python】xml 解析
  20. 在win7_64bit + ubuntu-12.04-desktop-amd64+VMware-workstation-full-10.0.1-1379776平台上安装ns-allinone-2.35

热门文章

  1. 发布MeteoInfo 1.2.6
  2. 【纯水题】POJ 1852 Ants
  3. spring boot:解决cors跨域问题的两种方法(spring boot 2.3.2)
  4. 【认知服务 Azure Cognitive Service】使用认知服务的密钥无法访问语音服务[ErrorCode=AuthenticationFailure] (2020-08时的遇见的问题,2020-09月已解决)
  5. git -- Authentication failed for 报错如何解决?
  6. 2020年的UWP(2)——In Process App Service
  7. linux配置java
  8. STM32入门系列-使用库函数点亮LED软硬件分析
  9. STM32入门系列-GPIO概念介绍
  10. freopen ()函数