我正在制作一个密码生成器,它将生成的密码转换为md5哈希,但不允许我将功能从一个文件导入到另一个文件。
这是我的代码。
password.py
import random
import string
def main():
y = int(input("Enter desired length for password: "))
def random_char(y):
return ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(y))
genpass = random_char(y)
print(genpass)
def getGenpass():
return genpass
main()
hash.py
import hashlib
import password
from password import getGenpass
mystring = password.getGenpass()
def main():
hash_object = hashlib.md5(mystring.encode())
print("Here is your md5 hash: " + hash_object.hexdigest())
main()
如果我从password.py中删除了导入,则脚本可以正常工作。
免责声明。我是python的新手。
答案 0 :(得分:0)
因为您的函数没有全局功能,所以它在main()中定义,并且不能从main外部访问。而且您的main总是在每次导入时运行。当您只想将其用作导入时,请尝试以下操作:
password.py:
import random
import string
def getGenpass():
def random_char(y):
return ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(y))
y = int(input("Enter desired length for password: "))
genpass = random_char(y)
print(genpass)
return genpass
然后仅将函数导入您的hash.py:
import hashlib
from password import getGenpass
答案 1 :(得分:0)
password.py
您可以这样编码:
import random
import string
def getGenpass():
y = int(input("Enter desired length for password: "))
def random_char(y):
return ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(y))
genpass = random_char(y)
print(genpass)
return genpass
答案 2 :(得分:0)
getGenpass是Main内部的一个内部函数,为什么期望它是可见的?