python函数中的两个坑(面试经常有)

枫铃3年前 (2021-09-30)Python215

1.函数内变量的作用域:

a=1
def fun():
    a=2
fun()
print(a)

思考下这段程序的结果是什么,如果你的答案是2,那恭喜你,答错了,结果是1,原因如下

a=1
def fun():
    a=2 #作用域是fun()函数,也就是说只能在fun中使用,fun结束,a也就消失了
fun() 
print(a) #a=1

那如果要引用开头的a怎么办:

a=1
def fun():
    golbal a
   a=2 #引用全局变量a
fun()
print(a) #a=2

2.参数的默认值是可变的

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def fun(a,b=[]):
    b.append(a)
    print(b)
fun(1)
fun(2)

这个结果什么是呢,[1],[2]?对的,你又入坑了,结果是[1],[1,2],为什么后一个会带上第一个的结果呢,原来函数在定义的时候,参数就被实例化了,b就指向了[],由于列表是可变的,所以每次append后,
b的值都改变了,下次引用就会带上上次的内容量,记住:默认参数必须指向不变对象!
如果要让结果为[1],[2],那就该做如下修改:

def fun(a,b=None):
    if b==None:
        b=[]
    b.append(a)
    print(b)
fun(1)
fun(2)

以上两个问题在实际中用到的虽然不多,但是面试会经常被问到,这也能看出python的功底吧,初学者经常不解,希望对大家有所帮助。

相关文章

Python:目录和文件的操作模块os.path和OS常用方法

1、目录和文件的操作模块os.path,在使用之前要先导入:import os.path。它主要有以下几个重要的功能函数ÿ...

Python 实现 动态规划 /斐波那契数列

Python 实现 动态规划 /斐波那契数列

1、斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那...

Python Selenium 常用方法总结

selenium Python 总结一些工作中可能会经常使用到的API。 1.获取当前页面的Url 方法:current_url 实例&...

Python 基础中20 个小技巧

1、字符串反转 下面的...

python中的偏函数

偏函数:...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。