社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python-if语句中变量的作用域-为什么下面的代码有效?[副本]

Zuhaib Ahmed • 4 年前 • 243 次点击  

我正在上一门在线Python课程,在其中一节课上,我们编写了一个程序,从一个文件中读取dna序列并将它们放入字典中。正在读取的文件的格式如下

>header1
dna sequence 1
>header2
dna sequence 2
>header3
dna sequence 3
...

一个示例文件是

>seq1
aaacgtgtgccccgatagttgtgtcagt
>seq2
acccgtgcacacagtgccaaggggatat
atagatatc
>seq3
agctcgatcgatcgattttagcgagagg
gagagacttcgatcgatcgagtcgatcg
a

程序如下:

try:
    f = open("fasta.txt")
except IOError:
    print("Coulnd't open file")

seqs = {}

for line in f:
    line = line.rstrip()
    if (line[0] == ">"):
        words = line.split()
        name = words[0][1:]
        seqs[name] = ''
    else:
        seqs[name] = seqs[name] + line

f.close()

print(seqs['seq5'])

我的问题是,为什么这个程序有效?根据我对编程语言的了解,变量在定义它们的块中有一个作用域。在程序中,变量 name ,在程序的“if”部分定义,但在程序的“else”部分引用。但是程序要进入程序的“else”部分的唯一方法是如果它不进入“if”部分,那么它就不会遇到变量 名称 . 所以在我看来,这个程序不应该运行。但这是有原因的。

所以我想问,为什么它是有效的。在Python中,变量作用域是如何工作的?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54949
 
243 次点击  
文章 [ 1 ]  |  最新文章 4 年前