函数调用
- 函数就是一段具有特定功能的代码块 num = len(my_list)
- 调用函数:通过一条简单的命令执行一系列复杂的操作
- 函数名len:函数的标识符
- 函数参数my_list:在调用函数时给函数提供数据
- 函数的返回值num:有些函数执行完毕会得到一个结果;不是所有函数都有返回值(None)
- print(len.__name__) 获取函数名
- print 函数使用简介
##### print 的使用 #####
print('hello','world','!')
# hello world !
print('hello','world','!',sep = '-')
# hello-world-!
print('hello',end = ' ')
print('world',end = ' ')
print('!')
# hello world !
定义函数
- 函数头: def 函数名(参数列表):
- 函数体:实现函数功能
- 函数必须先定义,再调用
##### 自定义函数 #####
def say_hi():
print('Hello') ## 不调用不执行
def good_morning():
say_hi()
print('Good morning!')
good_morning()
函数参数
##### 函数参数 #####
def line(width,char):
print(char*width)
line(5,'-')
line(10,'*')
def line(width,char:str):
char.split()
print(char*width)
## 虽然定义了char为str,但是在调用的时候仍然可以传递给它别的类型(int)的参数
line(5,5)
## 函数的文档注释
def line(width,char):
'''画一条线'''
print(char*width)
line(5,'-')
函数返回值
- 使用return进行返回
- return可以提前结束整个函数,函数执行到return就结束了,后面的代码不再执行
- if 语句的缩写:<表达式1> if <条件> else <表达式2>
##### 函数返回值 #####
# 1. 利用 return 进行返回
def get_max(a,b):
return max(a,b)
t = get_max(3,6)
print(t)
# 6
# 2. 借助return结束函数
def set_age(age):
if type(age) != int:
return None
if age < 0:
return
print(age)
age = set_age(10)
# 10
# 3. 返回多个值
def fun(a,b):
return a + b,a-b
i,j = fun(12,9)
print(f'i = {i},j = {j}')
p = fun(12,9)
print(f'p = {p}') # 元组
# i = 21,j = 3
# p = (21, 3)
# 4. if 语句的缩写
def maximun1(a,b):
v = a
if b > a:
v = b
return v
print(maximun1(2,4))
# 4
def maximun2(a,b):
v = b if b > a else a
# <表达式1> if <条件> else <表达式2>
return v
print(maximun2(9,0))
# 9
练习:日历
def is_leap_year(y):
'''
判断某一年是不是闰年
输入:year
输出:Ture,False
'''
if (y % 400 == 0) or (y % 4 == 0 and y % 100 != 0):
return True
else:
return False
def get_days_of_month(y,m):
'''
判断某一年的某一个月有几天
输入:year,month
输出:总天数
'''
if m in (1,3,5,7,8,10,12):
return 31
elif m in (4,6,9,11):
return 30
else:
if is_leap_year(y):
return 29
else:
return 28
def get_week_of_the_day(y,m,d):
'''
判断某年某月某天是星期几
'''
if m in (1,2):
m += 12
y -= 1
w = (d + 2 * m + 3 * (m + 1) // 5 + y + y // 4 - y // 100 + y // 400) % 7 + 1
return w
def get_calender():
'''
获取某年某月的日历
'''
days = get_days_of_month(year,month)
print('一 二 三 四 五 六 七')
print('-' * 20)
for day in range(1,days + 1):
w = get_week_of_the_day(year,month,day)
if day == 1:
print(f"{' ' * (w - 1) * 3}",end = '')
else:
if w == 1:
print('')
print(f'{day:2d}',end = ' ')
print('')
year = int(input('请输入年:'))
month = int(input('请输入月:'))
get_calender()