首页 技术 正文
技术 2022年11月12日
0 收藏 750 点赞 3,699 浏览 1731 个字

—恢复内容开始—

为什么要有函数?

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

 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模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900