Python 3.x循环内调用函数疑问:能否如Excel子程序般调用?
问题分析与解决:Python 3.x 循环中调用函数无输出的问题
首先明确说:Python 3.x完全支持在for循环里调用函数,和Excel里调用子程序的逻辑是相通的,只是Python有自己的语法和变量规则。你的代码没输出,是因为存在几个语法和逻辑错误,咱们一步步来修正:
你的代码里的问题点:
- 语法错误:
def my_func2(x1)这行末尾少了冒号:,Python函数定义必须以冒号结尾,否则会直接报错,代码根本跑不起来 - 变量作用域问题:
my_fun1(i)确实返回了值,但你没有把这个返回值赋值给任何变量,后面的print(x)和my_fun2(x)里的x是未定义的,会触发NameError - 冗余代码:
my_fun1里的x=+i其实就是x = i,完全可以直接返回i,没必要多此一举赋值
修正后的代码:
def my_fun1(i): # 直接返回i即可,没必要额外赋值 return i def my_func2(x1): # 补上冒号,修复语法错误 print(x1) test_rng = range(124, 124 + 100) for i in test_rng: # 把函数返回值赋值给x,这样后续才能使用这个变量 x = my_fun1(i) print(x) my_func2(x)
解释下修正后的逻辑:
- 调用
my_fun1(i)时,把返回的结果存到变量x里,这样后续的print(x)和my_func2(x)才能拿到正确的值 - 给
my_func2补上了冒号,解决了语法错误,函数能正常被调用 - 简化了
my_fun1的逻辑,让代码更简洁
现在运行这段代码,就能看到从124到223的数字依次输出啦,完全符合你想要的循环调用函数的效果~
内容的提问来源于stack exchange,提问作者Ghanshyam Bhat
相关产品推荐
相关产品推荐

