当前位置: 首页 > news >正文

Linux 平台下 Python 脚本编程入门(一)

众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写。大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会给你带来一些其它的好处。

在 Linux 中学习 Python 脚本编程

首先,我们会使用 Python 的命令行工具,还会接触到 Python 的面向对象特性(这篇文章的后半部分会谈到它)。

学习 Python 可以助力于你在桌面应用开发及数据科学领域的职业发展。

容易上手,广泛使用,拥有海量“开箱即用”的模块(它是一组包含 Python 语句的外部文件),Python 理所当然地成为了美国计算机专业大学生在一年级时所上的程序设计课所用语言的不二之选。

在这个由两篇文章构成的系列中,我们将回顾 Python 的基础部分,希望初学编程的你能够将这篇实用的文章作为一个编程入门的跳板,和日后使用 Python 时的一篇快速指引。

Linux 中的 Python

Python 2.x 和 3.x 通常已经内置在现代 Linux 发行版中,你可以立刻使用它。你可以终端模拟器中输入python 或 python3 来进入 Python shell, 并输入 quit() 退出。

 
 
  1. $ which python
  2. $ which python3
  3. $ python -v
  4. $ python3 -v
  5. $ python
  6. >>> quit()
  7. $ python3
  8. >>> quit()

在 Linux 中运行 Python 命令

在 Linux 中运行 Python 命令

如果你希望在键入 python 时使用 Python 3.x 而不是 2.x,你可以像下面一样更改对应的符号链接:

 
 
  1. $ sudo rm /usr/bin/python
  2. $ cd /usr/bin
  3. $ ln -s python3.2 python # Choose the Python 3.x binary here

删除 Python 2,使用 Python 3

删除 Python 2,使用 Python 3

顺便一提,有一点需要注意:尽管 Python 2.x 仍旧被使用,但它并不会被积极维护。因此,你可能要考虑像上面指示的那样来切换到 3.x。2.x 和 3.x 的语法有一些不同,我们会在这个系列文章中使用后者。

另一个在 Linux 中使用 Python 的方法是通过 IDLE (Python 集成开发环境the Python Integrated Development Environment),这是一个为编写 Python 代码而生的图形用户界面。在安装它之前,你最好查看一下适用于你的 Linux 发行版的 IDLE 可用版本。

 
 
  1. # aptitude search idle [Debian 及其衍生发行版]
  2. # yum search idle [CentOS Fedora]
  3. # dnf search idle [Fedora 23+ 版本]

然后,你可以像下面一样安装它:

 
 
  1. $ sudo aptitude install idle-python3.2 # I'm using Linux Mint 13

安装成功后,你会看到 IDLE 的运行画面。它很像 Python shell,但是你可以用它做更多 Python shell 做不了的事。

比如,你可以:

  1. 轻松打开外部文件 (File → Open);

    Python Shell

    Python Shell

  2. 复制 (Ctrl + C) 和粘贴 (Ctrl + V) 文本;

  3. 查找和替换文本;

  4. 显示可能的代码补全(一个在其他 IDE 里可能叫做“智能感知”或者“自动补完”的功能);

  5. 更改字体和字号,等等。

最厉害的是,你可以用 IDLE 创建桌面应用。

我们在这两篇文章中不会开发桌面应用,所以你可以根据喜好来选择 IDLE 或 Python shell 去运行下面的例子。

Python 中的基本运算

就像你预料的那样,你能够直接进行算术操作(你可以在你的所有运算中使用足够多的括号!),还可以轻松地使用 Python 拼接字符串。

你还可以将运算结果赋给一个变量,然后在屏幕上显示它。Python 有一个叫做拼接 (concatenation) 的实用功能——给 print 函数提供一串用逗号分隔的变量和/或字符串,它会返回一个由你刚才提供的变量依序构成的句子:

 
 
  1. >>> a = 5
  2. >>> b = 8
  3. >>> x = b / a
  4. >>> x
  5. 1.6
  6. >>> print(b, "divided by", a, "equals", x)

注意,你可以将不同类型的变量(数字,字符串,布尔符号等等)混合在一起。当你将一个值赋给一个变量后,你可以随后更改它的类型,不会有任何问题(因此,Python 被称为动态类型语言)。

如果你尝试在静态类型语言中(如 Java 或 C#)做这件事,它将抛出一个错误。

学习 Python 的基本操作

学习 Python 的基本操作

面向对象编程的简单介绍

在面向对象编程(OOP)中,程序中的所有实体都会由对象的形式呈现,并且它们可以与其他对象交互。因此,对象拥有属性,而且大多数对象可以执行动作(这被称为对象的方法)。

举个例子:我们来想象一下,创建一个对象“狗”。它可能拥有的一些属性有颜色品种年龄等等,而它可以完成的动作有 叫()吃()睡觉(),诸如此类。

你可以看到,方法名后面会跟着一对括号,括号当中可能会包含一个或多个参数(向方法中传递的值),也有可能什么都不包含。

我们用 Python 的基本对象类型之一——列表来解释这些概念。

解释对象的属性和方法:Python 中的列表

列表是条目的有序组合,而这些条目所属的数据类型并不需要相同。我们像下面一样来使用一对方括号,来创建一个名叫 rockBands 的列表:

你可以向 rockBands 的 append() 方法传递条目,来将它添加到列表的尾部,就像下面这样:

 
 
  1. >>> rockBands = []
  2. >>> rockBands.append("The Beatles")
  3. >>> rockBands.append("Pink Floyd")
  4. >>> rockBands.append("The Rolling Stones")

为了从列表中移除元素,我们可以向 remove() 方法传递特定元素,或向 pop() 中传递列表中待删除元素的位置(从 0 开始计数)。

换句话说,我们可以用下面这种方法来从列表中删除 “The Beatles”:

 
 
  1. >>> rockBands.remove("The Beatles")

或者用这种方法:

 
 
  1. >>> rockBands.pop(0)

如果你输入了对象的名字,然后在后面输入了一个点,你可以按 Ctrl + space 来显示这个对象的可用方法列表。

列出可用的 Python 方法

列出可用的 Python 方法

列表中含有的元素个数是它的一个属性。它通常被叫做“长度”,你可以通过向内建函数 len 传递一个列表作为它的参数来显示该列表的长度(顺便一提,之前的例子中提到的 print 语句,是 Python 的另一个内建函数)。

如果你在 IDLE 中输入 len,然后跟上一个不闭合的括号,你会看到这个函数的默认语法:

Python 的 len 函数

Python 的 len 函数

现在我们来看看列表中的特定条目。它们也有属性和方法吗?答案是肯定的。比如,你可以将一个字符串条目转换为大写形式,并获取这个字符串所包含的字符数量。像下面这样做:

 
 
  1. >>> rockBands[0].upper()
  2. 'THE BEATLES'
  3. >>> len(rockBands[0])
  4. 11

总结

在这篇文章中,我们简要介绍了 Python、它的命令行 shell、IDLE,展示了如何执行算术运算,如何在变量中存储数据,如何使用 print 函数在屏幕上重新显示那些数据(无论是它们本身还是它们的一部分),还通过一个实际的例子解释了对象的属性和方法。

原文发布时间为:2016-08-18

本文来自云栖社区合作伙伴“Linux中国”

相关文章:

  • 《网站设计 开发 维护 推广 从入门到精通》—— 1.2 网页美工常用工具
  • 大数据分析提升电子病历临床价值
  • 拆 JakeWharton 系列之 RxAndroid
  • JS---数组(Array)处理函数整理
  • css的元素表现
  • js 正则表达式 判断车牌号
  • Spring7:基于注解的Spring MVC(下篇)
  • js常见知识点2.面向对象相关
  • 20145328《网络对抗》网络欺诈技术防范
  • 09-01 Java final,多态,抽象类,接口
  • 仅作记录,游标,级联删除,获取所有该外键的表名
  • Unity引擎GUI之Image
  • 实体框架(Entity Framework)简介
  • CEF之CefSettings设置日志等级
  • 数据库管理和应用
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • extjs4学习之配置
  • GitUp, 你不可错过的秀外慧中的git工具
  • hadoop集群管理系统搭建规划说明
  • JavaScript 基本功--面试宝典
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Making An Indicator With Pure CSS
  • React Transition Group -- Transition 组件
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • tab.js分享及浏览器兼容性问题汇总
  • Vue2.x学习三:事件处理生命周期钩子
  • 不上全站https的网站你们就等着被恶心死吧
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用权重正则化较少模型过拟合
  • 写给高年级小学生看的《Bash 指南》
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • Hibernate主键生成策略及选择
  • MyCAT水平分库
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​香农与信息论三大定律
  • !$boo在php中什么意思,php前戏
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2020)Java后端开发----(面试题和笔试题)
  • (39)STM32——FLASH闪存
  • (floyd+补集) poj 3275
  • (层次遍历)104. 二叉树的最大深度
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转载)(官方)UE4--图像编程----着色器开发
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET 材料检测系统崩溃分析
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 中viewstate的原理和使用
  • .project文件