• 一. Python基础(1)--语法


    一. Python基础(1)--语法

    1. 应用程序

    1.1 什么是计算机(Computer)?

    组成

    ①运算器 arithmetic unit;

    Arithmetic unit and control unit are collectively called as CPU.

    ②控制器 control unit;

    ③存储器 memory unit;

    ·内部存储器 (内存) internal memory/internal storage; also called: main memory (主存)

    ·外部存储器 external memory/external storage: disk 磁盘: hard disk (硬盘), soft disk (软盘); CD-ROMCompact Disc Read-Only Memory,只读光盘)

    ④输入设备 input unit/devices;

    ⑤输出设备 output unit /devices.

     

    祖师爷

    Alan Turing 艾伦·图灵: father of computer science & father of artificial intelligence 计算机科学之父&人工智能之父

    Von Neumann ·诺依曼: father of the modern computer & father of Game Theory现代计算机之父&博弈论之父

     

    1.2 什么是操作系统(Operating System)?

    用于控制计算机硬件之间, 软件之间, 以及硬件和软件之间的数据交互(data exchange):

    Windows

    Linux (Unix-like)

        Macintosh (Unix-like)

     

    1.3 什么是应用程序?(应用软件-application software)

    软件包括:

    应用软件和系统软件 software: application software & system software

     

    应用软件的概念

    A program that gives a computer instructions that provide the user with tools to accomplish a task

     

    2. 介绍Python和编程语言

    2.1 编程语言分类

    根据语言被翻译的方式:

    --编译型(compiling): C, C#, Java(也有Java是解释型语言的说法)

    --解释性(interpreting): Python, PHP

    根据执行效率:

    --: C语言机器码

    --: Python, Java, PHP, C#→字节码机器码

    根据易学性, 易用性

    --Python

    --其它

     

    区别:

    --编译型语言:整个程序在执行之前需要一个专门的编译过程,即把程序编译成为机器语言的文件;再次运行时不需要重新翻译,直接使用已经编译好的结果就行了。程序执行效率较高,依赖编译器,跨平台性较差。

    --解释型语言:程序是在执行的时候才一句一句地翻译,因此,解释性语言的程序每执行一次就要翻译一次。程序执行效率较低,跨平台性较好。

    实际上,解释型现在有更宽泛的定义,详见:https://en.wikipedia.org/wiki/Interpreter_(computing)

     

     

    知识补充

    编程语言

    低级语言和高级语言low-level language & high-level language

    低级语言 low-level language: 机器语言(machine language) & assembly language 汇编语言

    高级语言high-level language: C/C++, Java, Python

    若一种程序语言不依赖于机器硬件,则称为高级语言 A programming language independent from hardware is a high-level language.

     

    2.2编程语言处理程序

    编译程序(编译器)→compiler

    解释程序(解释器/直译器) →interpreter

     

    知识补充

    语言之间的翻译形式 translation modes among languages:

    汇编 assemble: convert assembly language into machine language

    编译 compile: convert source language into assembly language or machine language. (一般指的就是翻译成机器语言)

    解释 interpret: convert source language into intermediate code, e.g., bytecode, statement by statement, and then machine language

     

    机器码 & 字节码 & 汇编语言

    机器码(machine code),是01组成的二进制序列,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据, 是执行速度最快的代码。

    字节码(bytecode)是一种中间码,它比机器码更抽象,需要解释器转换成机器码。

    机器码和汇编语言之间是一一对应的关系, 汇编程序中存有汇编指令(助记符)和机器码(机器指令)之间一一对应关系的对照表, 例如机器码B8对应汇编语言的MOV AX.

     

    汇编语言包括指令和伪指令(伪指令是为了编程方便,对部分指令做的封装)。JavaPython首先将源码编译(compile)为字节码(bytecode),这里的字节码就是上述的伪指令(Java的字节码保存在.class文件里; Python的字节码保存在.pyc文件里);然后JVMPVM会一句一句(statement by statement)地来解释(interpret)这些伪指令,把它们翻译成相应的二进制的机器码(machine code)来执行。

    注意:

    ①实际上很多解释器(如python.exe)内部是以"编译器+虚拟机"的方式来实现的。

    Java通过"Java Compiler"实现源码到字节码的转换,Python通过Cpython来实现源码到字节码的转换。

    Python import 别的 .py 文件时,那个. py 文件会被保存一份 pyc , 从而加速下次装载; 而主文件因为只需要装载一次就没有自动保存 pyc, 而运行Java程序时, 必须首先将源码编译成.class文件(通过javac命令)才可执行,这种编译方法称为"即时编译(Just-in-time compilation"

     

    Python 虚拟机(PVM: 一旦python程序编译成字节码或者字节码从已经存在的pyc 文件中载入,字节码会被发送到Python虚拟机(Python Virtual Machine)中来执行。PVM 就是迭代运行字节码指令的一个大循环,一个接一个地完成操作。 这步操作也就是Python 解释器的最后步骤。

     

    Python 代码的运行速度介于传统的编译语言和传统的解释语言之间

     

     

    2.3 Python的种类

    cpythonjpythonironpythonrubypythonpypy ....

    c语言开发的叫做CPython,用java开发的叫做Jpython…一般我们用的是CPython

    pypy是用python实现的python; pypy不会将脚本编译成字节码,而是用JIT(Just-In-Time, Java的编译技术一样)技术编译成机器码,在执行过程中会动态的优化。

    为什么Pypy没有取代CPython?

    第一点,就像其他人提到的,PyPy有很弱的C 语言扩展性。它支持C语言扩展,但是比Python本身的速度还慢。因此,很多模块本身就要求使用CPython.

     

    CPython 上的Numpy的数据处理性非常好,满足了那些既要求速度又大量使用Pandas, SciPy等数据分析任务的库的人。

     

    所以,Pypy 要么不支持或者很弱支持C语言扩展,要么减慢了那些数据处理的速度。完全无法比拟既可以满足速度要求又简单易用的CPyhon

     

    第二点,Python 3的支持在现阶段还是实验期。那些使用最新版本的Python新功能的人,现在应该还不愿意扔掉那些还在新鲜期的新奇功能。

     

    第三点,PyPy 并不是真正的脚本快,而大多数使用Python 的人就是在用脚本。这些脚本就是一些简短的程序。 PyPy 的最大优点是它针对长时间运行的简单数字处理的即时 (JIT) 编译器。直白地说, PyPy的先编译处理时间比CPython长的多。

     

    第四点,惰性。转移到PyPy需要重新装备机器。这对很多用户或者使用机构来说,都是太多的额外工作了。

     

     

    2.4 Python的版本

    --Python2.7    

    --Python3.x

     

    2.5 Python不同版本的安装/环境变量的设置/在cmd命令行程序下执行python脚本

    注意我们可以指定绝对路径来指定不同版本的Python解释器.

    在设置环境变量时, 系统变量之一的Path变量中的"%JAVA_HOME%in"中的"%JAVA_HOME%"指的是另一个系统变量JAVA_HOME的路径, 例如: "C:Program Files (x86)Javajdk1.6.0_25"

     

    2.6 Python基本语法

    ①输出: print()函数

    注意: Python2基于ASCII编码, Python3基于UTF-8编码

     

    ②输入: input()函数

    name = input("Please input your name:")

    print(name)

     

    注意: Python2, 对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError

    不过, 如果用raw_input()函数就没有这个限制了.

     

    ③变量(variable)

    基础: 变量名 =

    变量名命名规则:

    --只能包含字母, 数字, 下划线

    --变量名开头不能是数字

    --不能是Python的关键字: 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'

    --见名知义

    --尽量不要使用python中已经使用的

     

    ④初识数据类型(data type)

    整数类型(integer)

    字符串类型(string)

    布尔类型(Boolean)

     

    ⑤条件语句(conditional statement)

    形式一:

    if condition:

        statement

    else:

        statement

    形式二:

    if condition1:

        statement1

    elif condition2:

        statement2

    elif condition3:

        statement3

    else:

        statement4

     

    ⑥循环语句(loop statement)

    形式一:

    while condition:

        statement

     

    形式二:

    while condition:

        statement1

    else:

        statement2

     

    break, continue, pass

    --break 的作用是结束整个循环(跳出循环体),执行后面的程序。

    --continue 的作用是结束此次循环,进行下一次循环;

    --pass表示不做任何事情,一般用做占位语句。

     

    不要忘记给while true限定终止循环的条件,例如:

    # 依次打印12345689(三种实现方式)

    start = 1

    while start < 11:

        if start == 7:

            pass

        else:

            print(start)

        start += 1 # 该语句一定要与if...else语句并列

     

    print("=============================")

     

    value = 1

    while value < 11:

        if value == 7:

            value += 1 # 一定不要缺少这一句, 否则程序会无法终止

            continue

        else:

            print(value)

        value += 1

        

    print("=============================")

     

    begin = 0

    while True:

        begin += 1

        if begin <= 10:

            if begin != 7:

                print(begin)

        else:

            break # 一定要设置这个终止循环的条件

     

    3. 知识补充

    3.1 在Python shell中清屏

    import os     #加载os模块

    os.system("cls") # windows上执行cls命令

    os.system("clear") # linux上执行clear命令

     

    3.2 两种ASCII码

    ASCII码分别"7位版""8位版", 前者的码点(code point)范围是0-127, 后者的码点范围是128-255.

     

    3.3 python源程序的编码

    # -*- coding:utf-8 -*-

    # coding:utf-8

    # coding=utf-8

    更简单的写法: # encoding: utf-8

    # Python解释器默认源码采用ASCII编码。

    # 上面的注释告诉Python解释器:该源码采用utf-8编码。

    # 注意, 保存源码文件时也必须采用utf-8编码, 否则报错.

  • 相关阅读:
    Python3中urllib使用介绍
    python urllib和urllib3包
    Python--urllib3库
    Python基础-变量作用域
    Python 面向对象三(转载)
    Python 面向对象二(转载)
    Python 面向对象一(转载)
    YAML 在Python中的应用
    Redis 命令二
    基于Redis的Bloomfilter去重(转载)
  • 原文地址:https://www.cnblogs.com/ArrozZhu/p/8393375.html
Copyright © 2020-2023  润新知