day7(Alex python)

版权声明:本文为博主原创文章,转载请注明作者和出处。https://blog.csdn.net/xq920831/article/details/82216075

开始今天的内容。

1. 局部变量与全局变量

局部变量只在函数中有作用,整个函数就是局部变量的作用域。

全局变量写在函数之外,作用域为整个程序。一般写在头部

很好理解,这里就不多赘述了,给个例子自行理解。

# -*- coding:utf-8 -*-
# Author: Agent Xu

def change_name(name):
    print('before change:name --> %s' %name)
    name = 'agent xu'
    print('after change:name --> %s' %name)

name = 'agent'
change_name(name)
#before change:name --> agent
#after change:name --> agent xu
print(name)
#agent

如果需要在函数内写一个全局变量,则需要先声明该变量为全局变量,然后再赋值。(正常情况下不这么做!!!)

例如:

name1 = 'agent'
def change_name1():
    global name1
    name1 = 'agent xu'
    print(name1)

print(name1)
#agent
change_name1()
#agent xu
print(name1)
#agent xu

另外需要注意的是:除了数字和字符串(列表,字典,集合等数据结构),局部变量改了,全局变量也会跟着改。

name2 = ['agent','xiaohua','xiaosun']
def change_name2(name):
    name[0]='agent xu'
    print(name)
change_name2(name2)
#['agent xu', 'xiaohua', 'xiaosun']
print(name2)
#['agent xu', 'xiaohua', 'xiaosun']

2. 递归函数

自己调用自己,很重要,常用函数。

扫描二维码关注公众号,回复: 3177399 查看本文章

这里给个例子,可以测出机器的最大递归次数:

# -*- coding:utf-8 -*-
# Author: Agent Xu

def calculate(n):
    print(n)
    return calculate(n+1)

calculate(0)

递归的特性:

  • 必须有一个明确的结束条件。
  • 每次进入更深一层的递归时,问题规模相比上次递归都应有所减少。
  • 递归效率不高,递归层次过多会导致栈溢出。
def cal(n):
    print(n)
    if int(n/2)>0:
        return cal(int(n/2))
    print('-->%s' %n)

cal(10)

3. 高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就叫做高阶函数。

def adddata(x,y,f):
    print(f(x)+f(y))
    return f(x)+f(y)

adddata(6,-4,abs)
#10

注释小技巧:单行注释:#

                        多行注释:'''   '''

                                            Ctrl+?

猜你喜欢

转载自blog.csdn.net/xq920831/article/details/82216075