楼主: shenmdxa
1296 2

[问答] 小白求助python下for与if的区别. [推广有奖]

  • 0关注
  • 0粉丝

小学生

57%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
46 点
帖子
3
精华
0
在线时间
12 小时
注册时间
2016-2-3
最后登录
2016-9-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我已经定义了一个函数用于读取文件内容
def readfile(filename):
    '''Print a file to the standard output.'''
    f = open(filename)
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        print(line), # notice comma
    f.close()........
中间是判断sys.argv的输入
之后在该文件内想通过以下代码调用该函数时
else:
        for  filename in sys.argv[1:]:
               readfile(filename)

如果将for改为if,则会报错:NameError: name 'filename' is not defined。
我的疑问是在定义函数时不是已经定义形参吗?为什么if为导致这个错误而for不会?

多谢大神们了~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python For filename Standard Defined python

沙发
longgb246 学生认证  发表于 2016-3-16 01:53:55 |只看作者 |坛友微信交流群
定义的形参是函数内部的局部变量。
你在下面调用函数的时候,filename在函数外就根本没有定义,不能用if。变量都不存在,就没法if判断。
用for的话,是自动创建一个名为filename的变量,该变量遍历sys.argv[1:]。
说的在直接点,for  filename in sys.argv[1:]:    readfile(filename)    里面filename改成aaa程序照样跑。

使用道具

藤椅
shenmdxa 发表于 2016-3-16 20:01:16 |只看作者 |坛友微信交流群
longgb246 发表于 2016-3-16 01:53
定义的形参是函数内部的局部变量。
你在下面调用函数的时候,filename在函数外就根本没有定义,不能用if。 ...
了解了,是我的疏忽,谢谢啦~~~

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 15:02