Python学习第九课

函数

return返回值

  • return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
  • return 语句在同一函数中可以出现多次,但只要有一个得到执行,就会直接结束函数的执行

文档字符串

  • 在函数体的第一行使用一对三个单引号 ‘’’ 或者一对三个双引号 “”" 来定义文档字符串。
  • 可以使用 doc(注意双下划线)调用函数中的文档字符串属性。
def function():
        ''' say something here!
        '''
        pass
 
print (function.__doc__) # 调用 doc
#输出结果为:
 say something here!        
  • 文档字符串使用惯例:它的首行简述函数功能,第二行空行,第三行为函数的具体描述。

函数的作用域

  • 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。
  • 所有函数以外的区域都是全局作⽤域,在全局作⽤域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进⾏访问
  • 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量
  • 函数的参数也属于局部变量,只能在函数内部使用。
  • 在函数体内定义全局变量。即使用 global 关键字对变量进行修饰后,该变量就会变为全局变量。
def text():
    global add
    add= "http://c.biancheng.net/java/"
    print("函数体内访问:",add)
text()
print('函数体外访问:',add)

命名空间

  • 命名空间实际上就是⼀个专门⽤来存储变量的字典
  • 通过调用locals() 函数,我们可以得到一个包含当前作用域内所有变量的字典。
    “当前作用域”指的是,在函数内部调用 locals() 函数,会获得包含所有局部变量的字典;而在全局范文内调用 locals() 函数,其功能和 globals() 函数相同。

递归函数

  • 递归是解决问题的一种方式,它的整体思想,是将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题

  • 递归式函数有2个条件:
    1.基线条件: 问题可以被分解为最⼩问题,当满⾜基线条件时,递归就不执⾏了

    2.递归条件: 可以将问题继续分解的条件

#需求:求10!的值
#n!= n *(n-1)!
#10!=10*9!
# 9!=9*8!
#......
#1!=1
def fun(n):#求n!的值
   if n == 1:
      return 1
   return n*fun(n-1)
print(fun(10))

作业

  1. 用函数实现一个判断用户输入的年份是否是闰年的程序

    1.能被400整除的年份
    2.能被4整除,但是不能被100整除的年份
    3.以上2种方法满足一种即为闰年

def year(y):
   if y % 400 == 0:
      return True
   elif y % 4 == 0 and y % 100 > 0:
      return True
   else:
      return False
  1. 猴子吃桃问题(递归)
    猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少桃子?
def num(d):
    if d==10: 
        return 1
    else:
        return (num(d+1)+1)*2
print(num(1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值