2020年4月22日&23日 第六章 函数

2020-04-23  本文已影响0人  anivad

第六章 函数

6.1 函数的基本使用

6.2 函数的参数和返回值

6.3 变量作用域

6.4 lambda函数

6.5 time库

知识导入

【微实例】 为朋友唱生日歌,歌词为:
Happy birthday to you!
Happy birthday to you!
Happy birthday ,dear <名字>
Happy birthday to you!
编写程序为Mike和Lily输出生日歌。

#简单实现
print("Happy birthday to you!")
print("Happy birthday to you!")
print("Happy birthday,dear Mile !")
print("Happy birthday to you!")
如何将其功能封装起来,为不同的人输出生日歌呢?

6.1 函数的基本使用

函数

使用函数的优点

1 函数的定义

def <函数名>(<形式参数列表>): 
  <函数体> 
return <返回值>

函数的定义

2 函数的调用

<函数名>(<实际参数列表>)

函数的使用总结

def 榨果汁(水果):
   榨汁机工作
return 果汁
s=榨果汁(橙子)
print(s)
def 榨果汁(*水果):
   榨汁机工作
return 果汁
s=榨果汁(橙子,苹果,葡萄)
print(s)

1. 函数定义
使用def关键字定义为函数,同时需要确定函数名称、参数的个数、参数名称、并使用参数名称作为形式参数(占位符)编写函数内部代码。
2. 函数调用
通过函数名调用函数,并对函数的各个参数赋予实际值(实参),实际值可以是实际数据,也可以是在调用函数前已经定义过的变量或表达式。
3.函数执行
函数被调用后,使用实际参数(赋予形式参数的实际值)参与函数内部代码的运行,如果在函数运行过程中有输出语句则进行输出。
4.函数返回
函数执行结束后,根据return关键字的指示决定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。

def add(a,b): 
  return a+b
c=add(3,5)
print(c)
x,y=4,6
m=add(x,y)
print(m)

6.2 函数的参数和返回值

1 函数的参数

实际参数:

#位置参数
def rectangle(x,y): 
   s=x*y
   return s

#赋值参数
print("area1=",rectangle(3,5))
print("area2=",rectangle(x=3,y=5))
print("area3=",rectangle(y=5,x=3))

程序的运行结果
area1= 15
area2= 15
area3= 15

形式参数:

def rectangle(x,y=6):
   s=x*y
   return s
print("area1=",rectangle(3))
print("area2=",rectangle(x=3)
print("area3=",rectangle(3,5))
print("area3=",rectangle(y=5,x=3))

程序的运行结果
area1= 18
area2= 18
area3= 15
area3= 15

可变参数

def <函数名>(<形式参数列表>,*args): 
  <函数体>
  return <返回值列表>
def concat(*args,sep="/"):
  return sep.join(args)
print(concat("www","lnu","edu","cn"))
print(concat("www","lnu","edu","cn",sep="."))

运行结果
www/lnu/edu/cn
www.lnu.edu.cn

def getSum(x1,x2,*x3):
  total=x1+x2
  for i in x3:
    total+=i
  return total
print(getSum(1,2))
print(getSum(1,2,3,4,5))

运行结果
3
15

2 函数的返回值

函数的返回值

#单一返回值
def rectangle(x,y):
   s=x*y
   return s
print("area1=",rectangle(3,5))
area2=rectangle(8,9)
print("V=",area2*10)
#多返回值
def rectangle(x,y):
  s=x*y
  c=(x+y)*2
  return s,c
#当return语句返回多个值时,这些值形成了一个元组数据类型,如(s,c)
print("area1=",rectangle(3,5)[0])
print("c=",rectangle(3,5)[1])
#无返回值
def rectangle(x,y):
  s=x*y
  c=(x+y)*2
  print("area1=",s)
  print("c=",c)
rectangle(3,5)

6.3 变量的作用域

变量的作用域

def rectangle(x,y):
   s=x*y
   c=(x+y)*2
   return s,c
#s和c 是局部变量
print("area1=",rectangle(3,5)[0])
print("c=",rectangle(3,5)[1])
print("s=",s)  #会报错,因s是函数的局部变量
h=10
def rectangle(x,y):
  global h
#h 是全局变量
  v=x*y*h
  return v
print("v=",rectangle(3,5))
print("h=",h)

6.4 lambda函数

lambda函数(匿名函数)

f=lambda x,y:x+y
print(f(10,20))

运行结果
30

综合实例

【例6-1】 编写程序,为Mike和Tom输出生日歌

#E6-1.py
def happyA ():
  print("Happy Birthday to you!")
def happyB(name):
  happyA()
  happyA()
  print("Happy birthda,dear{}!".format(name))
  happyA()
happyB("Mike")
print()
happyB("Tom")

6.5 time库

time库

>>> import time
>>> time.localtime(   )#当地时间,已自动转化为北京时间
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, tm_hour=17, 
tm_min=59, tm_sec=13, tm_wday=4, tm_yday=108, tm_isdst=0)
>>> t=time.localtime()
>>> t.tm_mon
4
>>> t.tm_mday
17

综合实例

【例6-2】 编写程序,为Mike输出生日歌

#E6-2.py
import time
def happyA ():
  print("Happy Birthday to you!")
def happyB(name):
  happyA()
  happyA()
  print("Happy birthda,dear{}!".format(name))
  happyA()
t=time.localtime()
if t.tm_mon==4 and t.tm_mday==22:
  happyB("Mike")

time库——时间处理功能

>>>time.time()
1587117085.4883282
序号 属性
0 tm_year 4位年份
1 tm_mon
2 tm_mday
3 tm_hour 小时
4 tm_min 分钟
5 tm_sec
6 tm_wday 一周第几日
7 tm_yday 一年第几日
8 tm_isdst 是否是夏令时
>>>time.gmtime()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, 
tm_hour=9, tm_min=59, tm_sec=19, tm_wday=4, 
tm_yday=108, tm_isdst=0)
>>> time.gmtime(1516939876.623)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, 
tm_hour=4, tm_min=11, tm_sec=16, tm_wday=4, 
tm_yday=26, tm_isdst=0)
>>> import time
>>> time.localtime()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=22, tm_hour=11, tm_min=29, 
tm_sec=24, tm_wday=2, tm_yday=113, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=22, tm_hour=3, tm_min=29, 
tm_sec=28, tm_wday=2, tm_yday=113, tm_isdst=0)
>>>time.ctime( now)  #now可省略
'Fri Apr 17 18:02:12 2020'
>>> time.ctime(1500001234.32)
'Fri Jul 14 11:00:34 2017'

time库——时间 格式化功能

>>>t=time.localtime()
>>>time.mktime(t)
1566987981.0
>>>time.ctime(time.mktime(t))
'Wed Aug 28 18:26:21 2019'
>>>t=time.localtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)   #注意大小写
'2020-04-22 10:57:24'
>>> time.strftime("%H:%M:%S %Y-%m-%d",t)
'10:59:05 2020-04-22'
>>> time.strftime("%m-%d-%Y %H:%M:%S ",t)
'04-22-2020 10:59:31 '
>>> time.strftime("%b %d %Y %H:%M:%S ",t)
'Apr 22 2020 11:43:31 '
>>>t='2020-04-17 18:10:01'
>>>time.strptime(t,"%Y - %m - %d %H:%M:%S")
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, tm_hour=18, 
tm_min=10, tm_sec=1, tm_wday=4, tm_yday=108, tm_isdst=-1)

综合实例

time库——计时
【例6-3】 编写程序,实现进度条功能

#E6-3.py
import time
def ptime():
  t=time.localtime()
  return time.strftime("%Y-%m-%d %H:%M:%S",t)
print("程序开始时间:",ptime())
for i in range(10):
  print("■"*i, sep="", end="")
  time.sleep(0.2)
print("\n下载完成")
print("程序结束时间:",ptime())

【试一试】 读程序,分析程序的运行功能

#E6-4.py
import time
lst = ["\\", "|", "/", "—"]
for i in range(20):
  j = i % 4
  print(lst[j], end="")
  time.sleep(0.2)

课后作业

1.雨课堂平台发布的《第六章综合小练》
2.中国大学Mooc平台上的单元测试

上一篇 下一篇

猜你喜欢

热点阅读