函数add2num中包含return,意味着这个函数有一个返回值,其返回值就是a和b相加的结果。
🌻 05 函数的四种类型
根据函数的参数和返回值,函数可以分为四种类型:
- 无参数,无返回值的函数
- 无参数,有返回值的函数
- 有参数,无返回值的函数
- 有参数,有返回值的函数
1.无参数,无返回值的函数
def printMenu():
print('--------------------------')
print(' xx涮涮锅 点菜系统')
print(' 1. 羊肉涮涮锅')
print(' 2. 牛肉涮涮锅')
print(' 3. 猪肉涮涮锅')
print('--------------------------')
printMenu()
2.无参数,有返回值的函数
# 获取温度
def getTemperature():
#这里是获取温度的一些处理过程
#为了简单起见,先模拟返回一个数据
return 24
temperature = getTemperature()
print('当前的温度为:',temperature)
3.有参数,无返回值的函数
def test(num1,num2):
result=num1+num2
print('计算结果为:%d'%result)
4.有参数,有返回值的函数
def calculateNum(num):
result = 0
i = 1
while i<=num:
result = result + i
i+=1
return result
result = calculateNum(100)
print('1~100的累积和为:', result)
🌻 06 函数的嵌套调用
实例:
🌻 07 变量的作用域
作用域
- 为了避免变量的名称发生冲突,所以Python引入了
命名空间
的概念。 - 命名空间指的是
名称到对象的映射
,类似于字典,键名是变量的名字,值是变量的值。
命名空间是相互独立存在的,而且它们被安排在某个特定的层次,把这些层次结构组合起来就是作用域
。
- 本地作用域
- 函数嵌套作用域
- 文件作用域
- 内置作用域
局部变量
- 所谓
局部变量
,就是在函数内部定义的变量。 局部变量的作用域是函数内部
,意味着它只在定义它的函数中有效,一旦函数结束就会消失。
全局变量
- 定义在函数外的拥有
全局作用域
。 - 全局变量可以在
整个程序范围内
访问。 如果出现全局变量和局部变量名字相同的情况
,则在函数中访问的是局部变量
。
🌻 08 递归函数和匿名函数
一个函数的内部可以调用其他函数。但是,如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数
。
使用递归,实现阶乘 n! = 1 * 2 * 3 * … * n的计算。
def fact(n):
if n==1:
return 1
return n \* fact(n - 1)
Fact(5)
# 结果:120
# 过程:5\*4\*3\*2\*1
匿名函数就是没有名称的函数
,也就是不再使用def语句定义的函数。如果要声明匿名函数
,则需要使用lambda
关键字,匿名函数的声明格式如下所示:
lambda [arg1 [,arg2,.....argn]]:expression
匿名函数示例代码:
sum = lambda arg1, arg2: arg1 + arg2
print(“运行结果:", sum( 10, 20 ))
print("运行结果:", sum( 20, 20 ))
注意:
使用Lambda声明的匿名函数能接收任何数量的参数,但只能返回一个表达式的值。匿名函数不能直接调用print,因为lambda需要一个表达式。
🌻 09 日期时间函数
时间函数
在Python中,通常有如下几种方式表示时间:
(1)时间戳;
通常来讲,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
import time; # 引入time模块
ticks = time.time()
print("当前时间戳为:", ticks)
### 当前时间戳为: 1642048647.1326923
(2)格式化的时间字符串;
我们可以使用time模块的strftime方法
来格式化日期。
import time
# 格式化成2016-03-20 11:45:39形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 2022-01-13 12:38:08
(3)时间元组(struct_time)。
返回struct_time的函数主要有gmtime()、localtime()和strptime(),struct_time元组。
日历函数
1.calendar.calendar(year,w=2,l=1,c=6)
返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。
import calendar
print(calendar. firstweekday())
print(calendar.isleap(2018))
print(calendar.calendar(2021,w=1,l=1,c=6))
然后就可以得到我们的日期表了,是不是非常的nice:
2. 返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。
calendar. firstweekday()
3. 如果是闰年返回True,否则为false。
calendar.isleap(year)
4. 返回在Y1,Y2两年之间的闰年总数。
calendar.leapdays(y1,y2)
5. 返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
print(calendar.month(2021,2,w=2,l=1))
6. 返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
calendar.monthcalendar(year,month)
7. 返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
calendar.monthrange(year,month)
8.calendar.prcal(year,w=2,l=1,c=6)
相当于print(calendar.calendar(year,w,l,c))
🌻 10 随机数函数
1.random.random()
用于生成一个0到1的随机符点数: 0 <= n < 1.0。
import random# 生成第一个随机数
print("random():", random.random())# 生成第二个随机数
print("random():", random.random())
2.random.uniform(a,b)
返回a,b之间的随机浮点数,范围[a,b]或[a,b]取决 于四舍五入,a不一定要比b小。
3.random.randint(a,b)
返回a,b之间的整数,范围[a,b],注意:传入参数必须是整数,a一定要比b小。
4.random.randrang([start], stop[, step])
返回有个区间内的整数,可以设置step。只能传入整数,random.randrange(10, 100, 2),
结果相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。
5.random.choice(sequence)
从sequence(序列,是有序类型的)中随机获取一个元素,列表、元组、字符串都属于sequence。
random.randrange(10,100,2)
#结果等效于
random.choice(range(10,100,2)
6.random.shuffle(x[,random])
用于将列表中的元素打乱顺序,俗称为洗牌。
p = ["Python","is", "powerful","simple”]
random.shuffle(p)
7.random.sample(sequence,k)
从指定序列中随机获取k个元素作为一个片段返回,
sample函数不会修改原有序列
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list, 5)
print(slice)
print(list)
# [6, 9, 3, 1, 2]
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3️⃣ 本章小结----知难易🏆🏆🏆
😊😊😊人生是跋涉,也是旅行;是等待,也是重逢;是探险,也是寻宝;是眼泪,也是歌声!
本章主要针对函数进行了讲解,包括函数的定义调用、函数的参数、函数的返回值、函数的嵌套、递归函数、匿名函数、日期时间函数和随机数函数
。函数作为关联功能的代码段,可以很好的提高应用的模块性,希望读者能用好这些函数,并学会查询相关的函数手册。
4️⃣ 小试牛刀----习题讲解🌈🌈🌈
🏃 🏃 🏃本期问题
✍第一题 输入某年某月某日,判断这一天是这一年的第几天?
# -\*-coding:utf-8 -\*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
# 输入某年某月某日,判断这一天是这一年的第几天?
year = int(input('请输入哪一年:'))
month = int(input('第几个月:'))
day = int(input('几号:'))
k = 0
a = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
b = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year%400 == 0) or (year%4 == 0 and year%100 != 0):
for i in range(1,month):
j = b[i-1]
k+=j
else:
for i in range(1,month):
j = a[i-1]
k+=j
print(k+day)
✍第二题 斐波那契数列
# -\*-coding:utf-8 -\*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
# 斐波那契数列
# 斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
def feibonaji(n):
if n==1:
return 0
elif n==2:
return 1
else:
return feibonaji(n-1)+feibonaji(n-2)
print(feibonaji(8))
✍第三题 完全平方数
# -\*-coding:utf-8 -\*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
# 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
import math
n = 0
for n in range(-100, 10000):
n+=1
x=int(math.sqrt(n + 100))
y=int(math.sqrt(n+100+168))
if(x\*\*2==n+100 and y\*\*2==n+100+168):
print(n)
5️⃣ 写在最后----惊喜活动💎💎💎
福利1🎁🎁🎁
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!