简体   繁体   English

为什么在输出中没有打印??? Python

[英]why None is printed in output??? python

import json

file = 'favnum.json'

def save_fav():
    number = input('Type your favourite number: ')
    with open(file, 'w') as f:
        num = json.dump(number, f)
        return num

def get_stored_number():
    try:   
        with open(file) as f:
            number_fav = json.load(f)
        
    except FileNotFoundError:
        return None
    else:
        return number_fav

def main_number():
    num = get_stored_number()
    
    if num:
        print('your favourite number is: ')
        print(num)
    
    else:
        print('the number had not saved before\nthus you have to save it')
        numbers = save_fav()
        print('your number is saved')
        print(numbers)

main_number()

Output:输出:

the number had not saved before
thus you have to save it
Type your favourite number: 3.14
your number is saved
None

您应该在函数 save_fav() 中返回 number 而不是 num

Because that json.dump does not return anything except None and you are saving it in num, and returning num so function returns num too.因为那个json.dump不返回除 None 之外的任何内容,并且您将它保存在 num 中,并返回 num 所以函数也返回 num 。 So return anything meaningful else like even an empty string.所以返回任何有意义的东西,比如空字符串。

I think your function:我认为你的功能:

def save_fav():
    number = input('Type your favourite number: ')
    with open(file, 'w') as f:
        num = json.dump(number, f)
        return num

should be this instead:应该是这样的:

def save_fav():
    number = input('Type your favourite number: ')
    with open(file, 'w') as f:
        json.dump(number, f)
    return number

In your version, json.dump returns None , and so that's what you are returning from the function, and then printing later on.在您的版本中, json.dump返回None ,这就是您从函数返回的内容,然后稍后打印。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM