Advertisement

Python 基础--概念

阅读量:

在之前的章节中仅仅输出 'hello world' 也是远远不够的。你期望完成更多任务吗?你希望输入一些内容进行操作,并且从这些输入中获得所需的结果吗?借助Python中的变量和常量我们可以轻松实现这一目标,在本章中我们还将探讨其他相关概念。

1. 注释

注释 是任何存在于 # 号右侧的文字,其主要用作写给程序读者看的笔记。

举个例子:

复制代码
    print('hello world') #注意到 print 是一个函数
    
    
      
    
    代码解释

或者:

复制代码
    # 注意到 print 是一个函数
    print('hello world')
    
    
      
      
    
    代码解释

你应该在你的程序中尽可能多地使用有用的注释:

  • 阐述假设依据
  • 阐述关键决策依据
  • 详细说明重要细节
  • 明确指出研究目标
  • 详细描述问题定义
  • 说明系统局限性
  • 列举潜在挑战

代码能指示如何执行任务,注释则解释了原因所在

Ideally, this approach would be very useful for your program’s readers. They would easily understand what your program is intended to do. I should remember that I might be the person you’ll be talking to in six months.

2. 字面常量

一个字面常量(Literal Constants)的实例包括诸如 51.23 等数值,或者是一些像 "这是一串文本" 和 "This is a string" 这样的字符串对象。

采用这种称呼的原因在于它们属于一种直接可见的基础概念;这是因为当你应用这一术语时,你实际上是在引用其最本源的意义或价值。\n\n在编程语言中,默认情况下某些特定符号或数值具有固定的含义。\n例如,在编程环境中,“数字 2”总是仅指其自身而不具备其他潜在意义——这表明它是不可更改的一个固定值。\n\n此外,在数据处理过程中,“字符 A”与“字符 a”会被视为两个不同的标识符;这是因为它们基于相同的编码规则但采用了不同的字母区分策略。\n

2.1 数字

数字主要分为两种类型——整数(Integers)与浮点数(Floats)。

有关整数的例子即 2,它只是一个整数。

涉及浮点数值(Floating Point Numbers 在英语中通常缩写为 floats)的具体例子包括 ```` 。其中符号 E 表示 ...

针对有经验的程序员的经验性提示

提醒经验丰富的程序员避免将 int 类型直接用于表示任意精度的大整数。不建议单独使用 long 类型。

2.2 字符串

一串字符串(String)是 字符(Characters) 的 序列(Sequence)。

2.2.1 单引号

为了方便引用文本内容(将我这样框进来),建议采用使用单引号的方式进行标记(Quote me on this)。

所有引号内的空间,诸如空格与制表符,都将按原样保留。

2.2.2 双引号

使用双引号包裹的字符串与使用单引号包围的字符串其运行机制完全一致。例如,“你的名字是什么?”或者“What’s your name?”

2.2.3 三引号

你允许利用一组三个符号----"""''' 来进行多行字符串的指定。在三重引用符号之间的区域中可以任意地插入单引号与双引号。

复制代码
    '''这是一段多行字符串。这是它的第一行。
    This is the second line.
    "What's your name?," I asked.
    He said "Bond, James Bond."
    '''
    
    
      
      
      
      
      
    
    代码解释
2.2.4 字符串是不可变的

这一现象表明当你生成一段代码时,这段字符串无法被修改。看似是一个问题其实并不是一个大问题.我们即将展示多个程序来说明这一点。

针对C/C++程序员的提示

在Python中,并没有独立存在的字符数据类型。然而,并非完全不需要字符数据类型;我确信,在大多数情况下,你也不会真正需要这种类型的变量。

特别针对 Perl/PHP 程序员的提示

特别提醒:使用单引号(')定义的字符串其实和使用双引号(")定义的字符串是完全相同的——它们之间并不存在任何区别。

2.2.5 格式化方法

有时会希望利用其他数据来生成字符序列。
format()方法在这一领域发挥着重要作用,并且用途广泛。

复制代码
    age = 20
    name = 'Swaroop'
    
    print('{0} was {1} years old when he wrote this book'.format(name, age))
    print('Why is {0} playing with that python?'.format(name))
    
    
      
      
      
      
      
    
    代码解释

输出:

复制代码
    Swaroop was 20 years old when he wrote this book
    Why is Swaroop playing with that python?
    
    
      
      
    
    代码解释

我们可以通过联立字符串来达到相同的效果:

复制代码
    name + 'is' +str(age) + 'years old'
    
    
      
    
    代码解释

同时还应注意数字只是一个可选选项,所以你同样可以写成:

复制代码
    age = 20
    name = 'Swaroop'
    
    print('{} was {} years old when he wrote this book'.format(name, age))
    print('Why is {} playing with that python?'.format(name))
    
    
      
      
      
      
      
    
    代码解释

这样做同样能得到与前面的程序一样的输出结果。

Python 中 format 方法的主要功能是将各个输入参数填充到指定的格式位置上。其中包含更为详细和灵活的格式设置方式。

复制代码
    # 对于浮点数 '0.333' 保留小数点(.)后三位
    print('{0:.3f}'.format(1.0/3))
    # 使用下划线填充文本,并保持文字处于中间位置
    # 使用 (^) 定义 '___hello___'字符串长度为 11
    print('{0:_^11}'.format('hello'))
    # 基于关键词输出 'Swaroop wrote A Byte of Python'  
    print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))
    
    
      
      
      
      
      
      
      
    
    代码解释

输出:

复制代码
333
    ___hello___
    Swaroop wrote A Byte of Python
    
    
      
      
      
    
    代码解释

在讨论格式问题时

复制代码
    print('a', end='')
    print('b', end='')
    
    
      
      
    
    代码解释

输出结果如下:

复制代码
    ab
    
    
      
    
    代码解释

或者你通过 end 指定以空格结尾:

复制代码
    print('a', end=' ')
    print('b', end=' ')
    print('c')
    
    
      
      
      
    
    代码解释

输出结果如下:

复制代码
    a b c
    
    
      
    
    代码解释
2.2.6 转义序列

假设你想知道如何在Python中创建包含单引号的字符串?

另外一种方式来指定这个特殊的字符串如下:"What's your name?""像这样使用双引号符。类似地,请注意,在包含双引号符在内的字符串内需要通过转义序列来表示内部使用的双引号符。同样地,请确保为了表示反斜杠本身,在Markdown语法中需要通过转义序列 \ 来实现反斜杠符号本身的显示。

如果想指定一串双行字符串有什么方法?一种常用的方法是使用如上所述的三引号字符串;另一种方法则是利用转义字符---- \n 来标识新的起始行。以下是一个具体的示例:

复制代码
    'This is the first line\nThis is the second line'
    
    
      
    
    代码解释

还有一件需要的事情,在一个字符串中,一个放置在末尾的反斜杠表示字符串将在下一行继续,但不会添加新的一行。来看看例子:

复制代码
    "This is the first sentence. \
    This is the second sentence."
    
    
      
      
    
    代码解释

相当于

复制代码
    "This is the first sentence. This is the second sentence."
    
    
      
    
    代码解释
2.2.7 原始字符串

如果你需要指定一些未经过特殊处理的字符串,比如转义序列,那么你需要在字符串前增加 rR 来指定一个 原始(Raw) 字符串4。下面是一个例子:

复制代码
    r"Newlines are indicated by \n"
    
    
      
    
    代码解释

针对正则表达式用户的提示

在操作正则表达式时建议全程使用原始字符串。如果不这样做,则会遇到大量需要Backwhacking处理的情况。能够通过'\ 1'r'\1'来实现反向引用功能。

3. 变量

在计算机内存体系中(Variables)值是可以更改的(variables' values can be altered),即我们可以利用变量来存储各种数据(we can utilize variables to store different types of data)。与字符串常量不同(versus string literals),为了访问这些变量(to access these variables),我们需要为其分配特定的名字(we must assign specific names to them)。

4. 标识符命名

变量是标识符的具体实例。
标识符(Identifiers) 是用于表示特定事物的名称。
在命名这些标识符时,请遵循以下规则:

  • 须满足首字符为字母表中之字母、下划线或空格。
  • 标识符其余部分则由字符(包括大写字母、小写字母及Unicode符号)、下划线(_)以及数字(0至9)构成。
  • 标识符名称区分大小写差异。例如,“myname”与“MyName”两者不同。

5. 数据类型

变量能够存储不同类型的值表示 数据类型(Data Type) 。之前介绍的数字和字符串属于基本数据类型。在后续章节中,我们将学习如何利用 类(Classes) 来创建自定义的数据类型。

6. 对象

需要记住的是,Python 将程序中的任何内容统称为 对象(Object)

针对面向对象编程语言用户的提示:

对于Python这样的编程语言来说,在其设计中强调了(Strenth)面向对象的特点。

由于所有的事物都是对象——包括数字、字符串以及函数——因此这一特性得以实现。

我们将会探讨如何运用变量以及字面常量。请确保保存以下案例,并尝试执行相关程序。

7. 如何编写 Python 程序

从今以后,保存和运行 Python 程序的标准步骤如下:

7.1 对于 PyCharm 用户

启动 PyCharm程序。
按照指定名称新建一个空白项目。
将案例中的代码粘贴到新建窗口中。
右键选择‘打开’选项,在弹出菜单中点击‘运行’按钮。

请注意:每当您需要设置CLI参数时,请运行后选择配置选项,并在Script parameters:字段中输入相应的参数值。随后,请单击 OK 按钮。

7.2 对于其他编辑器用户

启动您选定的编辑器程序。
将案例中的代码内容复制并粘贴至该编辑器中。
按照指定名称将上述内容保存为文件。
在解释器环境中运行此脚本,请执行命令 python program.py

7.3 案例:使用变量与字面常量

输入并运行以下程序:

复制代码
    # 文件名:var.py
    i = 5
    print(i)
    i = i + 1
    print(i)
    
    s = '''This is a multi-line string.
    This is the second line.'''
    print(s)
    
    
      
      
      
      
      
      
      
      
      
    
    代码解释

输出:

复制代码
    5
    6
    This is a multi-line string.
    This is the second line.
    
    
      
      
      
      
    
    代码解释

在本阶段中,在程序运行过程中,在我们开始编写代码之前,在这个基本阶段中,在程序初始化步骤中,在最初的设置阶段中,在程序启动前的基础步骤中,在执行第一个操作之前,在程序运行的第一步中,在处理初始条件时,在初始化部分开始时

接下来,在将 1 加至 i 这个变量当前值后(即加上 1),我们会将其更新为新的总和。随后我们打印该变量,并希望得到的结果是 6

类似地,我们将字面文本赋值给变量 s,并将其打印出来。

为静态编程语言程序员提供的提示

变量仅需被赋值某一特定值,并无需预先声明或指定数据类型。

8. 逻辑行与物理行

物理行(Physical Line)被定义为编写程序时 你所见到 的内容;而逻辑行(Logical Line)则是由 Python 分析的 单个语句;根据这一设定,在编程环境中 每一 物理行 都会被系统视为独立的一个 逻辑单元。

举例来说,在编程环境中使用代码块语法如print('hello world')

Python 内置了一种理念:它支持每行代码都是一条独立的指令以提高可读性

如果要在一行物理行中指定多行逻辑行,则为了使操作明确且准确应当通过分号(;)来指示逻辑行或语句的终止。以下是一个实例:

复制代码
    i = 5
    print(i)
    
    
      
      
    
    代码解释

实际上等同于

复制代码
    i = 5;
    print(i);
    
    
      
      
    
    代码解释

同样可以看作

复制代码
    i = 5; print(i);
    
    
      
    
    代码解释

也与这一写法相同

复制代码
    i = 5; print(i)
    
    
      
    
    代码解释

不过,我非常希望你能每处理一行物理数据时,请确保只生成一行逻辑输出 。这个论点表明,在编写代码时应避免使用分号。实际上,在我的所有Python项目中都未发现过任何分号实例。

在一类特定情境中该方法表现出显著价值:如果有一行代码长度超过标准限制,则必须/需通过反斜杠将其分割成多个物理行。这被称作 显式行连接(Explicit Line Joining)

复制代码
    s = 'This is a string. \
    This continues the string.'
    print(s)
    
    
      
      
      
    
    代码解释

输出:

复制代码
    This is a string. This continues the string.
    
    
      
    
    代码解释

在某些情况下, 有时会有一个潜在的假设使得你可以省略反斜杠。这种情况即是逻辑行以括号开始。它可以是方括号或花括号中的一种。这被称作 隐式行连接(Implicit Line Joining)

类似地,

复制代码
    i = \
    5
    
    
      
      
    
    代码解释

等同于

复制代码
    i = 5
    
    
      
    
    代码解释

可能在某些情况下会遇到一种假设的存在,在这种情况下可以让您无需使用反斜杠符号。这种情况即为逻辑行以括号起始的形式出现,并且该起始的部分可以用方括号或花括号表示但不可以使用右括号。这种现象被称为 隐式行连接(Implicit Line Joining) 。当我们在后续讨论 列表(List)的相关内容时会对此进行详细说明

9. 缩进

在 Python 编程中,默认情况下所有代码都需要由空格分隔符分割开以区分不同部分;具体而言,在每一行代码的起始位置留有空格;这一现象通常被称为 缩进(Indentation) ,它用于规范代码格式;为了确保代码的一致性和可读性,在逻辑行开始处通常会使用空格或制表符来分隔代码块,并明确其所属层次;同时还可以用于明确语句之间的分组关系

这表明放置在一起的语句必须具备一致的缩进层级。这些集合通常被称作 块(block)

有一件事你需要记住:错误的缩进可能会导致错误。下面是一个例子:

复制代码
    i = 5
    # 下面将发生错误,注意行首有一个空格
     print('Value is', i)
    print('I repeat, the value is', i)
    
    
      
      
      
      
    
    代码解释

当你运行这一程序时,你将得到如下错误:

复制代码
      File "whitespace.py", line 3
    print('Value is', i)
    ^
    IndentationError: unexpected indent
    # 缩进错误:意外缩进
    
    
      
      
      
      
      
    
    代码解释

请注意,在某一行的开头有一个空格。Python 提示的信息表明该程序存在语法错误意味着该程序未能正确编写。这一信息对你而言具有重要意义:你不得在任何情况下开始新的语句块(除非一直使用默认主代码块)。这些情况将在后续章节中得到详细说明。

如何缩进

应用四个空格作为缩进方式。此建议源自于 Python 语言官方文档。优秀的编辑器通常会自动化地执行这一操作。请注意,在缩进时应确保每一处使用的空格数量一致。如果不这样做,可能会导致程序无法正常运行或出现意外的结果。

为静态编程语言程序员提供的提示

Python始终对块采用缩进方式,并且从不使用大括号。查看文档以获取更多细节。

总结

现在我们已经掌握了大量关键信息,在这一阶段我们可以深入探讨控制流语句的相关知识以及其他更为引人入胜的内容。为了更好地学习,请务必认真消化这一章的知识点。

参考资源

[1] 基础 · 简明 Python 教程

全部评论 (0)

还没有任何评论哟~