Débutant en Python, à propos des problèmes de fonction
高洛峰
高洛峰 2017-06-12 09:26:03
0
4
956

Premier code :

# -*- coding:gb2312 -*-
def get_wendu():
    wendu = 22
    print("您输入的温度是%d"%wendu)
    return wendu
def get_wendu_huashi():
    wendu = wendu + 3
    print("您输入的新温度是%d"%wendu)


print("------1-------")
wendu = get_wendu()
print("------2-------")
get_wendu_huashi()

Le premier résultat d'exécution de code :

Deuxième code :

# -*- coding:gb2312 -*-
def get_wendu():
    wendu = 22
    print("您输入的温度是%d"%wendu)
    return wendu
def get_wendu_huashi():
    result = wendu + 3 #这里是对第一段代码的修正,把前面一个wendu改成了新的变量名称result
    print("您输入的新温度是%d"%result)


print("------1-------")
wendu = get_wendu()
print("------2-------")
get_wendu_huashi()

Le deuxième résultat de l'exécution du code :

J'ai deux questions :
La première question :
Pourquoi l'instruction wendu = get_wendu() est-elle exécutée et le résultat est : la température que vous avez entrée est de 22, ce n'est pas simplement une instruction d'affectation Quoi ? Semblable à wendu = 22, une telle affectation ne sera pas imprimée. Pourquoi wendu = get_wendu() affiche-t-il le résultat ? Se pourrait-il que l'instruction print de la fonction imprime cette chose pendant le processus d'affectation ?
Deuxième question :
Pourquoi wendu = wendu + 3 est-il faux dans le premier morceau de code, mais peut-il être exécuté avec succès s'il est remplacé par result = wendu + 3 ? Est-ce parce que lorsque la phrase wendu = wendu + 3 est exécutée, le système rencontre print("La nouvelle température que vous avez entrée est %d"%wendu), et le système ne peut pas distinguer si le wendu est le wendu précédent ou le wendu suivant ?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(4)
洪涛

Votre première question est en fait que vous ne comprenez pas l'exécution de l'instruction. Wendu = get_wendu(), get_wendu() est une expression, elle renverra une valeur, et cette valeur sera assignée à la variable wendu, et get_wendu () Cette expression est une fonction d'exécution. Elle exécutera les instructions définies dans le corps de votre fonction dans l'ordre. Si vous y écrivez print, elle exécutera naturellement print.

Votre deuxième problème est en fait que vous ne comprenez pas la différence entre les variables locales et les variables globales. L'impression n'a aucun impact, elle est simplement causée par des références de variables différentes.
Tout d’abord, parlons des déclarations que vous pouvez exécuter ici.

def get_wendu_huashi():
    result = wendu + 3

Ici, la variable wendu n'est pas déclarée et définie à l'intérieur de la fonction, mais elle peut être utilisée directement. En fait, elle fait référence à la variable globale wendu, qui est la variable définie ici. Cela explique également pourquoi le résultat imprimé est 22+3wendu = get_wendu()

Et vous ne pouvez pas exécuter la déclaration

def get_wendu_huashi():
    wendu = wendu + 3
    print("您输入的新温度是%d"%wendu)
Une nouvelle variable wendu est en fait déclarée dans la portée interne de la fonction, qui n'a pas encore été définie. Ensuite, la variable wendu dans wendu+3 fait référence à cette nouvelle variable non définie, ce qui provoque naturellement une erreur.

Comprenez la portée mondiale et la portée locale et vous saurez où se trouve l'erreur.

仅有的幸福
  1. get_wendu() 是一个函数调用,调用 get_wenduget_wendu 里面 print("您输入的温度是%d"%wendu) 就是打印 wendu La valeur de cette variable locale

  2. wendu = wendu + 3 是因为 wendu 这个变量还未定义,你就在使用它,由错误信息就可以看出来,UnboundLocalError: local variable 'wendu' referenced before assignment

阿神
  1. print("您输入的温度是%d"%wendu) Cette phrase ne concerne-t-elle pas uniquement l'impression

  2. Python recherchera par défaut les variables dans la portée actuelle. Puisqu'il n'y a pas de wendu 这个变量自然也就报错了。你可以在 wendu = wendu + 3 前加上一句 nonlocal wendu dans la portée actuelle, il peut fonctionner normalement

  3. .
仅有的幸福
  1. La fonction

    print() imprime sur la sortie standard,

        print("您输入的温度是%d"%wendu)
        # print会打印括号中的内容,%d表示格式化输出int类型,
        # 其实这句话和print(("您输入的温度是22")是等价的
  2. Le message d'erreur est Local variable 'wendu' referenced before assignment, ce qui signifie que la variable wendu n'a pas été utilisée avant l'appel. Je pense que vous serez choqué si vous traduisez ce message d'erreur. Le nom est déclaré dans wendu = get_wendu() mais il dit non, mais l'ordinateur n'est pas aussi peu puissant que vous le pensez = =, = est utilisé pour l'affectation, il il faut savoir quel est le wendu.
    La raison est que pour l'affectation de variables à l'intérieur d'une fonction, Python considérera cette variable comme une variable locale, donc votre wendu est une variable locale à ce moment et non globale
    Vous pouvez essayer de la modifier comme ça

    def get_wendu_huashi():
        global wendu
        wendu = wendu + 3
        print("您输入的新温度是%d"%wendu)
  3. N'utilisez pas Pinyin pour les noms de variables, n'utilisez pas Pinyin pour les noms de variables, n'utilisez pas Pinyin pour les noms de variables. Utilisez le moins possible les variables globales. Selon vos besoins, il sera préférable de choisir de passer des paramètres.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal