python的函数能直接调用外部的变量,所以有些时候没必要传参了?

baidu_28726667 2019-01-25 11:40:37

函数内是可以直接打印外面的变量?! 但是却不能运算?!


import os

def printdrink():
print("drink:", drink[i])
#test+=1 会报错,屏蔽
print(test)


test = 111

drink =['coffee','black_tea','milk_tea','cococa','water']
print("type drink: ",type(drink))
for i in range(len(drink)):
printdrink()





结果

type drink: <class 'list'>
drink: coffee
111
drink: black_tea
111
drink: milk_tea
111
drink: cococa
111
drink: water
111

另外这个test在函数内并不能 test+=1 会报错 local variable 'test' referenced before assignment ?! 意思说我使用了一个没初始值的局部变量 ?

如果代码改为

import os

def printdrink(test):
print("drink:", drink[i])
test+=1
print(test)


test = 111

drink =['coffee','black_tea','milk_tea','cococa','water']
print("type drink: ",type(drink))
for i in range(len(drink)):
printdrink(test)


这样函数里面永远都是打印112.这代表了这个test只是值传递。有没有办法强制引用传递呢?


...全文
1387 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2019-02-12
  • 打赏
  • 举报
回复
ruancan 2019-01-26
  • 打赏
  • 举报
回复
你应该是只想让test变量随着printdrink调用次数而增加。

def printdrink():
print("drink:", drink[i])
global test
test += 1
print(test)


test = 111

drink = ['coffee', 'black_tea', 'milk_tea', 'cococa', 'water']
print("type drink: ", type(drink))
for i in range(len(drink)):
printdrink()

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧