Heim  >  Artikel  >  Backend-Entwicklung  >  Wie Werte übergeben werden, wenn Python-Abschlüsse ausgeführt werden

Wie Werte übergeben werden, wenn Python-Abschlüsse ausgeführt werden

不言
不言Original
2018-06-04 11:16:321305Durchsuche

In diesem Artikel wird hauptsächlich die Methode der Wertübertragung bei der Ausführung von Python-Schließungen vorgestellt. Er analysiert das Prinzip und die Implementierungsmethode der Wertübertragung bei der Ausführung von Python-Schließungen. Der Code enthält detailliertere Kommentare zum leichteren Verständnis wird benötigt Freunde können sich auf das

Beispiel dieses Artikels beziehen, um die Wertübertragungsmethode während der Python-Schließungsausführung zu analysieren. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Erläuterungen zu Problemen und Problemen im Code.

#!/usr/bin/python
#coding: utf-8
# 判断一个人是否及格,如果满分150,则90及格,如果满分100,则60及格
# 开始的疑惑:当fun函数执行完以后,对应的val的值就应该消失,但是,
# 当下面代码再次调用f(60)的时候(这个f()函数就是fun_c()函数)
# 却能够打印出val的值???
def fun(val):
  'val是得到的分数'
  # 打印此时存储的val的地址
  print("%x" % id(val))
  def fun_c(passline):
    'passline是及格线'
    if val >= passline:
      print("通过")
    else:
      print("不及格")
  return fun_c
f = fun(89) # f就是fun_c函数
# 利用__closure__打印出fun_c()函数的属性,可以发现f中第一个元素的id值和val的id值地址相同
# 这说明如果引用了外部的变量(enclosing变量)的话,会将这个变量添加到函数属性中
# 当再次进行查找(即f(60))的时候,并不是到代码中去查找,而是到函数属性中去查找
# 也就是上面的fun_c的属性中有val的值,是一个元组,不能够改变
print(f.__closure__)
f(60)
f = fun(89)
f(90)

Laufergebnis:

12ee0b0
(<cell at 0x017B24B0: int object at 0x012EE0B0>,)
通过
12ee0b0
不及格

Funktion des Abschlusses:

1. Kapselung des Codes

2. Code-Wiederverwendung

Verwandte Empfehlungen:

Vertiefendes Verständnis des Python-Schließmechanismus

Python-Schließungsmethoden zur Implementierung Zähler

Das obige ist der detaillierte Inhalt vonWie Werte übergeben werden, wenn Python-Abschlüsse ausgeführt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn