暂无分类
暂无标签
发布于2020-06-13 16:20 阅读(810) 评论(0) 点赞(10) 收藏(5)
0
1
2
3
4
5
6
7
8
我们在上一篇博客简单的认识了函数,了解了函数的语法以及一些基本要素,这篇博客是对上一篇博客:函数三部曲——初来乍到 的再次补充,供我们进一步了解函数相关的知识以及一些简单用途。
def fn():
'意大利炮'
print(fn(),type(fn()))
def fn1():
return"意大利炮"
print(fn1(),type(fn1()))
def fn1():
return"意大利炮"
s = fn1() # 将函数的返回值通过赋值给变量s,对变量s进行打印
print(s)
print(fn1()) # 直接将函数的返回值进行打印
#return 返回对象多样化
def fn3():
return [1,2,3] # 返回列表
print(fn3(),type(fn3()))
def fn4():
return 'aoligei' # 返回列表
print(fn4(),type(fn4()))
def fn5():
return (1,2,3) # 返回元组
print(fn5(),type(fn5()))
def fn6():
return fn5() # 返回函数
print(fn6(),type(fn6()))
def fn1(*j):
r = 0
for i in j:
r += i
print(r)
s = fn1(1,2)
print(s,type(s))
print(s+4)
def fn2(*j):
r = 0
for i in j:
r += i
return r
s = fn2(1,2)
print(s+4)
print(fn2(1,2),type(fn2(1,2)))
print(fn2(1,2)+4)
#return与break的区别
def fn1():
for i in range(5):
if i == 3:
return
print(i)
print("奥利给")
fn1()
def fn2():
for i in range(5):
if i == 3:
break
print(i)
print("奥利给")
fn2()
def fn():
print('123')
print('我打印了函数 = ',fn)
print(fn())
help(print)
def fn1(a,b,c):
'''
文档字符串的使用方法
参数的作用
参数 a : 他能干什么,有什么类别限制...
参数 b : 他能干什么,有什么类别限制...
参数 c : 他能干什么,有什么类别限制...
return:
'''
return '奥利给'
help(fn1) #查看我们自定义的fn1这个函数对象
长字符串用 三个单引号’’’ 或者 三个双引号""" 来表示
全局作用域:
函数作用域:
简单举例:
#函数作用域
def fn():
a = 10 # 我们在函数fn内部 将10 赋给变量 a
print(a,'在函数fn的内部')
fn()
print(a,'在函数fn的外部')
我们再来看下面的代码:
#函数作用域
b = 100 # 充当全局变量
def fn():
a = 10 # 我们在函数fn内部 将10 赋给变量 a
print(a,'在函数fn的内部')
print(b, '我调用了变量b')
fn()
print(b,'在函数fn的外部')
那么如果是 函数嵌套 呢?
#函数的嵌套
def fn1():
a = 100
def fn2():
print('我调用了fn1的函数,a =',a)
fn2()
fn1()
def fn1():
a = 100
def fn2():
global a #把fn2函数的变量a进行"升级"处理,把他变成了全局变量
a = 30
print('我调用了我自己的变量,a =',a,id(a))
fn2()
fn1()
print('a =', a, "我不是100了,而且我的内存地址是=", id(a))
挖坑:还有个保留字nolocal跟global在某些地方的用法相似,
挖坑:关于global和globals的区别,后面再补
老规矩:插个连接,哈哈嗝。
python官网:关于nolocal的说明
举点栗子:
a = 30
b = 40
scope = locals()
print(scope)
#局部变量命名空间的获取
def fn():
a = 10
b = 20
c = '奥利给'
scope = locals()
print(scope)
print(c)
fn()
我们在了解递归函数之前,先了解一个经典例子:阶乘
哈哈嗝,下面我将举例:
#我们将10的阶乘进行分解:
# 10!= 10*9! 10*9的阶乘
# 9! = 9*8! 9*8的阶乘
# ...
# 2! = 2*1
# 1! = 1
def fn(n):
r = n # 创建一个变量用来保存我们的参数
for i in range(1,n):
r *=i # n-1 的阶乘乘以n 实现n的阶乘
return r # 返回 n的 阶乘
print(fn(10))
我们可以总结出递归函数的两个条件:基线条件和递归条件
通过上面10的阶乘,我们对条件进行拆分:
10! = 10*9! # 10*9的阶乘
9! = 9*8! # 9*8的阶乘
...
...
2! = 2*1
1! = 1
对于此,我们可以了解到;
基线条件:判断 n ==1的时候,就不执行了
递归条件:通过上述公式,我们可以得出如下公式:
n!=n*(n-1)!
(n-1)! = (n-1)*(n-2)!
...
...
(n-(n-2))!=(n-(n-2))*(n-(n-1)
综上 n! = n*fn(n-1)
代码展示即:
def fn1(n):
r = n
if n == 1:
return 1
return n*fn1(n-1)
print(fn1(10))
原文链接:https://blog.csdn.net/weixin_45095678/article/details/106661359
0
1
2
3
4
5
6
7
8
9
作者:9384vfnv
链接: https://www.pythonheidong.com/blog/article/414572/8319fa61835f34e92f32/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!