zoukankan      html  css  js  c++  java
  • Python文件头注释的含义,你肯定不懂

     

    本文档描述了Python语言文件头里典型注释的含义。

    1. 指定解释器

    不管在linux还是在windows下,要运行一个python文件(比如hello.py)的方式一般都是

    python ./hello.py
    • 1

    然而,有一种方式可以直接运行hello.py文件,那就是直接在python文件开头指定所使用的python解释器。然后就可以直接用

    ./hello.py
    • 1

    运行了(当然得先chmod +x ./hello.py让这个文件有可执行权限)。

    “在python文件开头指定解释器”的方式有两种。另外如果你python刚学不久,建议可以先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,进步更快哦!

    1.1. 直接指定解释器路径

    #!/usr/bin/python
    • 1

    上面这种方式,指定了必须用/usr/bin/python这个解释器来解释本python文件。 
    当然了,也可以写成

    #!/usr/local/python3/bin/python3.4
    • 1

    只要那个路径下有python解释器。

    1.2. 指定系统环境变量设定的解释器路径

    #!/usr/bin/env python
    • 1

    而这种方式,指定了使用linux环境变量$PATH里某个路径下名为python的解释器来解释本python文件。 
    (注意到开头/usr/bin/env是linux里读写环境变量的一个程序) 
    如果环境变量$PATH的内容是/usr/bin:/usr/local/bin:/usr/local/python3/bin,那么上面的注释就意味着会依序寻找这些路径: 
    1. /usr/bin/python 
    2. /usr/local/bin/python 
    3. /usr/local/python3/bin/python 
    第一个存在的路径,就会作为python解释器使用。 
    当然,如果写成这样

    #!/usr/bin/env python3
    • 1

    那么查找解释器的路径顺序就会变成 
    1. /usr/bin/python3 
    2. /usr/local/bin/python3 
    3. /usr/local/python3/bin/python3

    2. 标明本py文件的编码类型

    前置知识:文本文件保存在硬盘上时,是需要按照一定编码规则来保存的。比如GBK、UTF-8、UCS2之类。而文本编辑器、阅读器、浏览器打开硬盘上的文本文件时,需要知道这个文本文件的编码规则。

    以下是正文——

    python文件第二行一般是下面两种之一:

    # -*- coding: utf-8 -*-
    • 1

    或者

    # coding: utf-8
    • 1

    这一行的意思是:告诉python解释器,这个文件是以UTF-8方式编码存储的。其实类似文本文件开头的BOM。

    对于全文都是ASCII编码的py文件而言,这行注释一般没用,因为ASCII字符在绝大多数编码存储方式中都是相同的(除了UCS2这种)。但是,如果代码中出现了明文的中文、日文之类非ASCII的字符(作为字符串常量或注释),他们在不同编码存储方式下,在硬盘上的字节流是不同的。 
    例如下面这段python代码

    s = "函数"
    • 1

    在硬盘上保存时会这样

    编码字节流
    GBK 73 20 3D 20 22 BA AF CA FD 22
    UTF-8 73 20 3D 20 22 E5 87 BD E6 95 B0 22

    (注意到除了两个汉字,其他字符对应的字节都是一样的,比如最后那个0x22表示最后那个双引号) 
    如果不告诉Python解释器如何理解这个py文件,就会出现乱码。 
    比如,如果py文件实际上是以UTF-8方式存储的(就是表格第二行),但python解释器却以GBK编码存储去理解它,那么这段代码会被理解为

    s = "鍑芥暟"
    • 1

    那么用

    print(s)
    • 1

    打印字符串时,就会看到乱码文字了。 另外如果你python刚学不久,建议可以先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,进步更快哦!
    综上,为了让python解释器在解释py文件时能正确理解这个py文件里的非ASCII字符,就需要

  • 相关阅读:
    用C#设置系统时间和本地时间
    在ASP.NET中使用Session常见问题集锦 收藏
    C#开源资源大汇总(2)
    漫谈ASP.NET设计中的性能优化问题
    比较著名的.net技术论坛名称(含国外的)
    在ASP.NET 2.0中,一个ASP.NET页面的生命周期
    DataGrid技巧大集合(转载)
    Silverlight经典教程书籍汇总
    Asp.Net细节性问题技巧精萃
    C#开源资源大汇总(1)
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12027680.html
Copyright © 2011-2022 走看看