python中遇到的疑难问题解释

1

Tkinter中,一个控件可能属于另一个控件,这时另一个控件就是这个控件的master。默认一个窗口没有master,因此master有None的默认值。总而言之:组件的master属性即指代该承载该组件的父容器(Tk, Frame等)。

2

一个有继承关系的类:

class Frm(Frame):
    def __init__(self, parent=None):
        Frame.__init__(self, parent)
        self.pack()
        Button(self, text='Spam', command=quit).pack()
  • Frame.__init __(self, parent)作用: 因为这里不是直接用对象调用函数,也不是一般意义的创建对象(例如后面的quitButton),而是初始化自身的一部分,因此需要传入self。
  • 为什么不可以把class Frm(Frame)一句中的括号即其内容去掉:Frame.__init __(self, parent)初始化调用中可能使用了Frame类的方法和内部变量,如若删去则可能导致初始化失败。而把Frame作为父类则能继承它的方法和内部变量。
  • 为什么不能调用两次Frame.__init __(self, parent):父类的初始化调用不是向self上添加成分,而是初始化自身的一部分,调用两次则会导致重复初始化,准确说不是不能是不应该。例:
class Cl(Frm):
    def __init__(self):
        Frm.__init__(self)
        Frm.__init__(self)

初始化两次,导致运行时发现窗口上有两个按钮组件。从该例可以看到,重复初始化可能导致预料不到的后果。

虽然说CGI已经落伍了,但透过它你更容易了解网络的本质,所以我还是想记录一些关于CGI的内容

3

用python写CGI程序可能会遇到code 404, message No such CGI script ('/cgi-bin/totur0.py')或是该程序不是CGI脚本之类等错误提醒,请使用:

python -m http.server --cgi 80
#当然端口自选,一般是80罢了

当我们使用localhost指向本地IP,通过URL在浏览器上访问某个页面,会带你到你执行该命令目录下的html或cgi脚本或是其他的文件。

4

当我们遇到不同的语言句法时会受到那些语言的保留字影响。
例如在CGI脚本中标准输出流会通过套接字将输出指向到chrome等浏览器,而在浏览器中的显示是由HTML语言控制的。我们想在网页中显示I want to print &lt时,那么这句话时应该将其转义为I want to print &amp;lt,否则会在网页上显示为I want to print <我当时想用HTML中的“PRE”或是“CODE”标签来避免转义,结果我误会了这个标签的含义–它仅仅是对于空格或制表符等不再压缩成一个空格,对其它的还是会进行转义
下面是目前我所见到的一些转义工具:(待填坑…)

  1. HTML转义:cgi.escapehtml.escape(前者也可以用,不过似乎快要被废弃了,好像是因为官方将前者更名为后者。。。 )
  2. THML转义还原:html.unescape这个是真的没有cgi.escape了
  3. URL转义:urllib.parse.quote
  4. URL转义还原:urllib.parse.unquote

5

用CGI写脚本通常要在题头后面加一个换行符,即整个题头后面要加个空行,否则你访问那个页面时整个页面会显示空白。
一般而言你不加一下cookie题头等乱七八糟的那么整个题头就这么一句话:Content-type: text/html
总而言之,题头后面一定要加一个空行

猜你喜欢

转载自blog.csdn.net/San__Qi/article/details/102239009
今日推荐