python入门_python入门教程 - CSDN
精华内容
参与话题
  • 零基础掌握 Python 入门到实战

    万人学习 2020-08-07 15:32:25
    【为什么学PythonPython 是当今非常热门的语言之一,2020年的 TIOBE 编程语言排行榜中 ,Python名列第一,并且其流行度依然处在上升势头。 在2015年的时候,在网上还经常...
  • Python 快速入门实战教程

    万次阅读 多人点赞 2019-07-17 14:48:02
    两年前,因项目需要,作者首次接触 Python,从此便一发不可收,基于 Python 完成了多个项目的开发。一路走来,深感书本与实践脱离之痛,市面上种类繁多的编程辅导书,大都力求面面俱到,动辄数百页,难免...

    课程介绍

    2017年末,Python 在国务院《新一代人工智能发展规划的通知》中被列入教学大纲,一时风头无两。Python 因其在人工智能领域的先天优势,深受欢迎,不难预见,它在未来将大有可为。两年前,因项目需要,作者首次接触 Python,从此便一发不可收,基于 Python 完成了多个项目的开发。一路走来,深感书本与实践脱离之痛,市面上种类繁多的编程辅导书,大都力求面面俱到,动辄数百页,难免令初学者望而生畏。鉴于此,作者推出了本达人课,试图以一种对话的形式,带领读者走进 Python。

    本课程是一个系列的 Python 教程,目标是带领读者快速掌握 Python 要义,进而上手实战。

    课程从 Python 开发环境搭建开始,随后介绍了 Python 的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。

    然后,循序渐进地介绍了一些相对高级的主题,包括抽象、异常、文件、GUI,网络编程,爬虫等。

    此后,探讨了如何将 Python 与数据库、网络、Java 语言、Shell 脚本等工具结合使用。

    最后,课程将结合实际应用场景带领读者完成两个小程序的设计和实现。

    本课程是作者在学习工作中总结而成,内容循序渐进,语言表述生动,可读性强,认真读完这个系列文章,有助于初学者夯实基础,同时又能帮助程序员提升技能。

    点击购买,查看课程全文

    作者介绍

    应书澜,毕业于 C9 高校,研发出身,曾在阿里巴巴、上海电气、浙能集团、华为等企业的重要项目中担任技术负责人和设计师,现专注于中间件技术。

    课程内容

    导读:Python 简史

    在正式学习 Python 之前,我们应该对以下内容有所了解。

    Python 读音

    Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。

    Python 命名

    Python 命名的由来颇具感性色彩,1989年圣诞节期间,在阿姆斯特丹,Guido 为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为 ABC 语言的一种继承。之所以选中 Python(意为大蟒蛇)作为该编程语言的名字,是因为他是一个叫 Monty Python 的喜剧团体的爱好者。

    Python 特点

    若有人问我 Python 最大的特点是什么,我会毫不犹豫的告诉他:简单易学,功能强大。作为一款纯粹的自由软件,Python 有很多优点:

    1. 简单,基于“优雅”、“明确”、“简单”的设计哲学,Python 设计时尽量使用其它语言经常使用的标识符号和英文单词,优秀的 Python 程序具有如同英文般的易读性,这使得学习 Python 变得容易;
    2. 高级,Python 是一种高层次的编程语言,与 Java,C/C++ 相比,Python 距离真实的机器更远,它使你能够专注于解决问题而无需考虑诸如如何管理你的程序使用的内存一类的底层实现细节;
    3. 易移植,正因为脱离了底层细节的约束,Python 非常易于移植,无需修改便可以在各个平台运行,包括:Linux、Windows、FreeBSD、Macintosh、Solaris、AROS 等等。
    4. 解释性,Python 在执行时,首先会将 .py 文件中的源代码编译成 Python 的 Byte Code(字节码),然后再由 Python Virtual Machine(Python 虚拟机)来执行这些编译好的 Byte Code。用户不需要担心如何编译程序,如何确保连接装载正确的库等等。
    5. 强大而丰富的库:Python 具有丰富和强大的库,它可以帮助你处理各种工作,包括数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI、Tk 等标准库。除此以外,还有许多高质量的库,如十分经典的科学计算扩展库:NumPy、SciPy 和 matplotlib。
    6. 面向对象,Python 既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如 C++ 和 Java 相比,Python 以一种非常强大又简单的方式实现面向对象编程:Python 是完全面向对象的语言,函数、模块、数字、字符串都是对象,并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python 支持重载运算符和动态类型。
    7. 可扩充,Python 提供了丰富的 API 和工具,以便程序员能够轻松地使用 C 语言、C++、Cython 来编写扩充模块。Python 编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把 Python 作为一种“胶水语言”(Glue Language)使用。使用 Python 将其他语言编写的程序进行集成和封装。

    Python 发展

    Python 诞生至今已经成为最受欢迎的程序设计语言之一。自2004年以后,Python 的使用率一直呈线性增长。根据 TIOBE 编程语言社区发布的2018年1月排行榜,Python 已经超过 C# 跃居热门编程语言的第四位。

    由于 Python 语言的简洁性、易读性以及可扩展性,在国外用 Python 做科学计算的研究机构日益增多,一些知名大学已经采用 Python 来教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用 Python 语言讲授。众多开源的科学计算软件包都提供了 Python 的调用接口,例如著名的计算机视觉库 OpenCV、三维可视化库 VTK、医学图像处理库 ITK。而 Python 专用的科学计算扩展库就更多了,例如十分经典的科学计算扩展库:NumPy、SciPy 和 Matplotlib,它们分别为 Python 提供了快速数组处理、数值运算以及绘图功能。因此 Python 语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。

    Python 前景

    未来是人工智能的时代,有理由相信 Python 将发挥更大的作用。经过多年的演进,人工智能发展进入了新阶段。为抢抓人工智能发展的重大战略机遇:

    • 2017年7月20日,国务院印发了《新一代人工智能发展规划》,提出了面向2030年我国新一代人工智能发展的指导思想、战略目标、重点任务和保障措施。
    • 2017年 10 月 11 日,教育部考试中心发布了“关于全国计算机等级(NCRE)体系调整”的通知,决定自 2018 年 3月起,在计算机二级考试加入了“Python 语言程序设计”科目。
    • 2018年1月16日上午,教育部召开新闻发布会,介绍了《普通高中课程方案和语文等学科课程标准(2017年版)》的有关情况,在此次“新课标”改革中,正式将人工智能、物联网、大数据处理划入新课标,这也就意味着今年秋季入学的高中生,将要开始学习 Python 了。

    学习 Python

    当前,Python 已经成为人工智能领域最流行的编程语言,而人工智能的火热又反过来促进了 Python 的发展。在国家层面力量的大力推动下,Python 普及的速度定将大大加快,无论是作为辅助工具还是跟随时代步伐,学习 Python 都是很有意义的。

    两年前,因项目需要,作者首次接触 Python,从此便一发不可收,基于 Python 完成了一系列项目的开发。一路走来,深感书本与实践脱离之痛,市面上种类繁多的编程辅导书,大都力求面面俱到,动辄数百页,难免令初学者望而生畏。鉴于此,作者写了本课程,试图以一种简明的形式,带领读者走近 Python。

    第01课:Python 开发环境搭建及预备知识

    特别说明

    如果读者已经搭建了 Python 开发环境,可跳过本章第一部分,但需要注意,本课程列举的实例代码中部分有中文注释,有些集成开发环境可能不支持中文注释,因此,运行本课程实例时请注意将注释去掉。另外,如果读者觉得搭建开发环境比较繁琐,可采用 Python 自带的 IDLE 作为开发环境,安装方法请访问:《Python3入门笔记》

    Python 开发环境搭建

    开发 Python 的 IDE 有很多,本文介绍基于 Eclipse+PyDev+Python 搭建开发环境的方法。

    • Eclipse 简介

    Eclipse 是一款基于 Java 的可扩展开发平台。其官方下载中包括 J2EE 方向版本、Java 方向版本、C/C++ 方向版本、移动应用方向版本等诸多版本。除此之外,Eclipse 还可以通过安装插件的方式进行诸如 Python、Android、PHP 等语言的开发。本文将要介绍的就是使用 Eclipse 与 PyDev 插件,安装 Python 开发环境的方法。

    • 环境

    OS:Windows 7

    Python:3.6.2

    Java:8u31

    Win7 32位,Mac OS 操作系统同下述安装方法。

    软件下载

    Eclipse 下载

    我们可以进入 Eclipse 官网下载界面下载 Eclipse 软件。在该页面,可以看到针对不同开发需求的 Eclipse 版本,本文采用的是 Eclipse IDE for Java and DSL Developers。目前,最新的版本是 Eclipse Oxygen.2 (4.7.2) Release,为2017年10月放出的版本。另外,还需要注意的是,需要根据自己的操作系统选择正确的系统位数(32/64bits)。

    PyDev 离线下载

    我们可以在 PyDev 项目下载页面看到一些有价值的信息:

    1. Eclipse、Java、PyDev 的版本对应关系;
    2. Eclipse 在线安装 PyDev 的 URL;
    3. 离线安装 PyDev 下载地址(Get zip releases),点击可以进入 SourceForge 的下载页面。本文介绍离线下载方法。

    enter image description here

    Eclipse 安装

    这里要注意,Eclipse 安装需要 Java 环境,如果还没有安装 Java 环境,请先去下载安装 JDK(点击这里)。

    Eclipse 实际上是一个基于 OSGI 框架的软件,在 Windows 系统上无需安装,只需要将其解压,双击打开 eclipse.exe 即可。在 Mac OS 上则有所不同,需要双击 .dmg 文件安装。在第一次运行时,会要求你输入工作路径,你可以自定义也可以接受默认路径。

    PyDev 插件安装

    Eclipse 插件的安装方式有离线和在线两种,本文介绍在线安装方法。

    打开 Eclipse,选择“Help”->“Install New Software”。在弹出的对话框中,点击 Add 按钮,添加新的安装源,如下图所示。

    enter image description here

    在 Location 处填写安装源的网址:http://www.pydev.org/updates/(很多博客中写的是http://pydev.org/updates),这个地址并非一成不变,因此,最好到官网确认一下。确认方法在上面“软件下载”小节中已有说明。

    此外,需取一个名字填写在 Name 处,比如我这里写的是 PyDev。把“connect all update sites during install to find required software”的勾选去掉,否则在安装新插件时会联网寻找所有可能的更新站点搜索,导致安装时间不可预估,并可能导致安装失败。确定后可以看到一个 Pending 过程,然后得到如下图所示的插件,一般来说,我们只需选择 PyDev 即可,这里我两个都安装了(不推荐):

    enter image description here

    勾选后,点击 Next 进行安装。不过,由于网络的原因,这种方法安装 PyDev 极有可能失败,提示网络连接错误等。

    Python 安装

    Python 的安装比较简单,前往 Python 官网下载安装包。进入官网之后,官网会根据你的计算机操作系统推荐 Python 安装包的版本,如下图所示,你可以根据推荐下载最新的安装包,需要注意的是,Python 目前有 Python2 和 Python3 两个大版本,差异显著,本课程基于 Python3 编写,因此,请读者选择 Python3.X 安装包,具体内容安装步骤可参考博文《Python3 入门笔记——Windows 安装与运行》

    enter image description here

    PyDev 插件配置

    安装好 PyDev 插件后,并不能正常使用,还需要配置 Python 的解释器。

    打开Eclipse,选择“Window” -> “Preferences”(如果是 Mac,则同时按下 Command 和 键唤出 Preference),找到“PyDev”,选择其中的“Interpreter” –> “Python”。点击“New”,添加一个系统里已有的 Python 解释器的路径(根据自己安装的路径确定)。确定后会经过短暂的处理,得到它的 Libraries、Buildins 等。当然,还可以根据自己的编程习惯对 PyDev 进行一些其他的配置,这里就不再说了。

    enter image description here

    创建一个 Python 项目

    前面就已经配置好了 Python 的开发环境,下面新建一个项目,来测试一下,确实可以运行。

    点击“File” -> “New” -> “Other”,找到“PyDev”,选择“PyDev Project”,点击“Next”。取一个项目名称,比如 helloPython,此外,还可以选择 Python 的语言版本和解释器版本,如下图所示:

    enter image description here

    点击“Finish”,完成项目创建。然后你会进入 PyDev 视图,进行 Python 开发。这里,我们就写一个最简单的程序,进行测试。右键项目的 src 目录,选择“New” -> “PyDev Package”,创建一个 Python 包,此处也命名为 helloPython。再右键该 package,“New” -> “PyDev Module”,此处也命名为 helloPython。双击打开 helloPython.py,添加如下代码。

    if __name__ == '__main__':     print("hello world!")  

    右键项目,选择“Run As” -> “Python Run”,或 Ctrl+F11 运行项目。此时,可以在下方的 Console 窗口,看到项目的运行结果:hello world!。

    Python 预备知识

    编程语言

    编程语言(Programming Language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

    解释

    上面的定义读起来比较晦涩,下面我通俗的解释一下。

    在人类发展史上,一般将文字的出现视为文明的标志,无论是汉语,英语还是法语,它们都是人类交流沟通的工具。文字使得人类之间的沟通和交流变得有章可循,极大的提高了信息传播的效率。自计算机诞生之后,人们一直希望给计算机赋予语言的特性,使计算机像人一样的沟通,而编程语言则可看作人与计算机之间“交流沟通”的工具,它使得人类和计算机之间的高效交流得以实现。

    高级编程语言

    在实践中,人们意识到人和计算机直接“交流”相当困难,计算机能够直接理解的语言是0和1构成的机器码,而这种机器码并不符合人类的认知习惯,因此,高级编程语言应运而生。

    何为高级呢?指的是符合人类的理解习惯和思维方式,远离计算机底层。高级编程语言(如 Java,Python)使得人们能够以相对容易的方式将期望计算机执行的指令表达成文。但是,这种高级语言写成的“文章”,计算机是无法直接理解的,因此,还需要一个“翻译”,将人们编写的高级语言按照规则翻译成计算机能够理解的机器语言。根据编程语言的不同,这里的“翻译”也有显著区别。关于人与计算机之间的“交流”,简略的示意图如下:

    enter image description here

    与 Java 和 C++ 差别显著

    学习过 C/C++、Java 的读者一定还记得定义变量的方法,如下例子,定义 a、b、c、d 四个变量,其数值类型分别为 int、double、long、float,定义变量的时候,我们需要“显式”的声明变量的类型,以便在内存中为该变量开辟空间,不同的数据类型占用的内存空间是不同的,所以必须要声明。

    int a;double b;long c;float d;

    与 C++ 和 Java 不同,Python 中变量没有类型,更谈不上声明变量类型,变量只是对象的引用,而 Python 的所有类型都是对象,包括函数、模块、数字、字符串、列表、元组、字典等等。

    如下所示,定义变量 a 并赋值,同一个变量在同一段程序中三次被赋值不同的类型,之所以能如此操作,就是因为变量没有类型,它可以指向任何类型,单从这一点来看,Python 与 C++、Java 差别是很明显的。

    # -*- coding: UTF-8 -*a = 12print("a=", a)a = "ABCDE"print("a=", a)a = 1 + 4jprint("a=", a)

    执行结果:a= 12a= ABCDEa= 1+4j

    本课程实例的说明

    为了便于读者更好的理解,本课程列举了很多程序实例,其中部分程序涉及中文注释,另外,为了直观的展现程序执行的结果,课程中的实例大量使用 print 语句将结果打印到控制台,便于读者观察。

    关于本课程的实例风格,这里举一个简单的例子:

    # -*- coding: UTF-8 -*#自定义函数,求两个数的和def add(a, b):    return a + b;#直接调用内建函数pow(x,y),计算x的y次方print('10的3次方 = %d' %pow(10,3))print('1 + 2 = %d' %add(1,2))执行结果:10的3次方 = 10001 + 2 = 3

    特别说明

    上面例子中,有两点需要解释一下。

    • # -*- coding: UTF-8 -*

    Python 默认是以 ASCII 作为编码方式的,如果在自己的 Python 源码中包含了中文(或者其他非英语系的语言),即使你把自己编写的 Python 源文件以 UTF-8 格式保存了,运行时仍可能会报错:SyntaxError: Non-ASCII character '\xe5' in file XXX.py on line YY, but no encoding declared;

    解决办法:在每一个包含中文或其它语言注释的 Python 脚本文件的第一行,加入以下声明:

    # -*- coding: UTF-8 -*-
    • #

    “#”表示注解,在代码中输入它的时候,它右边的所有内容都将被忽略,注解是极为有用的,不仅有助于别人理解自己的代码,也可以提示自己。

    通过命令运行 Python 脚本

    上面的例子中,我们运行 Python 脚本都是通过 Eclipse IDE(集成开发环境)完成的,事实上运行程序的方法很多,对于 Python 语言而言,我们可以直接以命令的方式运行。

    Windows 系统

    进入 Python 脚本 test.py 所在路径下,键入命令:Python test.py。

    注意:Python 首字母大写。

    Linux 或 Unix 系统:

    进入 Python 脚本 test.py 所在路径下,键入命令:python test.py。

    注意:Python 首字母小写。

    第02课:数字和运算符

    数字

    Python 提供了三种数字类型,即 int(整型),float(浮点型),complex(复数)。

    1. int:通常被称为整型或者整数,如100、99、1、3都属于整型;
    2. float:浮点数包含整数和小数部分,如3.1415,12.578712;
    3. complex:复数包含实数部分和虚数部分,形如 a+bj,其实部和虚部都是浮点类型。

    需要注意的是,Python3 已经废弃了 Python2 的 Long(长整型),在 Python3 中,int 的大小没有限制,可以作为 Long 使用。

    数字类型转换

    Python 的三种数字类型可以进行相互转换,转换方式为:数字类型+圆括号,如下实例:

    a = 123b = 3.1415926print("int(b)=",int(b))print("float(a)=",float(a))print("complex(a)=",complex(a))print("complex(a,b)=",complex(a,b))

    执行结果:

    int(b)= 3float(a)= 123.0complex(a)= (123+0j)complex(a,b)= (123+3.1415926j)

    常用的数学函数

    Python 提供了丰富的数学函数以降低编程实现的难度,本节将介绍一些常用的函数。

    import math#求绝对值:abs(x)print("abs(-12)=",abs(-12))#向上取整:ceil(x)print("ceil(3.1415)=",math.ceil(3.1415))#向下取整:floor(x)print("floor(3.678)=",math.floor(3.678))#四舍五入:round(x)print("round(3.678)=",round(3.678))#乘方运算:pow(x,y),x的y次方print("pow(3,4)=",pow(3,4))#求平方根:sqrt(x)print("sqrt(144)=",math.sqrt(144))

    执行结果:

    abs(-12)= 12ceil(3.1415)= 4floor(3.678)= 3round(3.678)= 4pow(3,4)= 81sqrt(144)= 12.0

    运算符

    计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Python 也提供了一套丰富的运算符来满足各种运算需求。

    Python 运算符大致可分为7种,即算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符以及身份运算符。

    算术运算符

    对算术运算,大家并不陌生,常用的加减乘除就是算术运算。不过,在编程语言里,算术运算的符号特殊一些,Python 中的算术运算有7种:加(+)、减(-)、乘( * )、除(/)、取模(%)、幂运算( ** )和取整预算(//)。以下通过实例演示算术运算符的用法。

    #初始化测试数据X = 24Y = 5Z = 0#分别进行7种算术运算Z = X + Y print("X + Y =", Z)Z = X - Y print("X - Y =", Z)Z = X * Y print("X * Y =", Z)Z = X / Y print("X / Y =", Z)Z = X % Y print("X % Y =", Z)Z = X ** Y print("X ** Y =", Z)Z = X // Y print("X // Y =", Z)

    执行结果:

    X + Y = 29X - Y = 19X * Y = 120X / Y = 4.8X % Y = 4X ** Y = 7962624X // Y = 4

    比较运算符

    比较无处不在,大于、小于、等于、不等于……和 C/C++、Java 等编程语言一样,Python 也提供了6种比较运算符:>(大于),<(小于),==(等于),!=(不等于),>=(大于等于),<=(小于等于)。比较运算的结果是一个布尔值,True 或者 False,如下实例:

    #初始化测试数据X = 24Y = 5#分别进行7种比较运算print("X == Y:", X == Y)print("X != Y:", X != Y)print("X > Y:", X > Y)print("X < Y:", X < Y)print("X >= Y:", X >= Y)print("X <= Y:", X <= Y)

    执行结果:

    X == Y: FalseX != Y: TrueX > Y: TrueX < Y: FalseX >= Y: TrueX <= Y: False

    赋值运算

    在前文的实例中已经用到赋值运算,如 X = 25,就是一个最简单的赋值运算,“=”就是最简单的赋值运算符。将简单的赋值运算与算术运算结合,Python 形成了丰富的赋值运算符:+=、-=、=、/=、%=、*=、//=。实例如下:

    #初始化测试数据X = 2Y = 3#分别进行7种赋值运算Y = X print("Y = X, Y =", Y)Y += X print("Y += X, Y =", Y)Y -= X print("Y -= X, Y =", Y)Y *= X print("Y *= X, Y =", Y)Y /= X print("Y /= X, Y =", Y)Y **= X print("Y **= X, Y =", Y)Y //= X print("Y //= X, Y =", Y)

    执行结果:

    Y = X, Y = 2Y += X, Y = 4Y -= X, Y = 2Y *= X, Y = 4Y /= X, Y = 2.0Y **= X, Y = 4.0Y //= X, Y = 2.0

    逻辑运算

    所谓逻辑运算,就是:与、或、非。Python 中3种逻辑运算符分别为:and(与),or(或),not(非),逻辑运算的结果是布尔值:True 或者 False。

    1. A and B:当 A 为 False 时,运算结果为 False;否则返回 B 的值;
    2. A or B:当 A 为 True 时,运算结果为 A 的值,否则返回 B 的值;
    3. not A:当 A 为 True 时,返回 False,否则返回 True。

    如下实例:

    #初始化测试数据X = 2Y = 3Z = 5#分别执行3种逻辑运算print("X>Y and X<Z :", X>Y and X<Z)print("X<Y and Z :", X<Y and Z)print("X>Y or Z :", X>Y or X<Z)print("X<Y or Z :", X<Y or Z)print("X or X<Z :", X or X<Z)print("not X :", not X)print("not X<Y :", not X<Y)

    执行结果:

    X>Y and X<Z : FalseX<Y and Z : 5X>Y or Z : TrueX<Y or Z : TrueX or X<Z : 2not X : Falsenot X<Y : False

    位运算

    程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。Python 中有6种位运算符:

    1. &:按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0;
    2. |:按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1;
    3. ^:按位异或运算符,当两对应的二进位相异时,结果为1;
    4. ~:按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1;
    5. >>:右移动运算符,把 >> 左边的运算数的各二进位全部右移若干位,>> 右边的数指定移动的位数;
    6. <<:左移动运算符,运算数的各二进位全部左移若干位,由 << 右边的数指定移动的位数,高位丢弃,低位补0。

    举个例子:a=21,b=6,将两个数转换为二进制形式进行位运算。

    a = 0001 0101b = 0000 0110a&b = 0000 0100a|b = 0001 0111a^b = 0001 0011~a = 1110 1010a<<2 = 01010100a>>2 = 0000 0101

    成员运算

    除了上文介绍的5种运算符,Python 还支持成员运算符。介绍成员运算符之前,我们需要提前了解一个概念:数据结构,如字符串、列表、元组、字典。在接下来的章节中我们将详细介绍这些基础的数据结构。字符串、列表、字典,它们就像一个集合,其中包含若干元素,这些元素就是集合的成员;对于一个给定的元素,它有可能在一个给定的集合中,也可能不在,Python 中采用成员运算符来判断元素是否属于成员,成员运算的结果为布尔值,True 或者 False。

    如下实例:

    #初始化一个字符串和列表temp1 = "ABCDEFG"temp2 = [4,2,3,5,8,9]a = "CDE"b = 5c = "CDF"print("a in temp1?", a in temp1)print("b in temp2?", b in temp2)print("c in temp1?", c in temp1)

    执行结果:

    a in temp1? Trueb in temp2? Truec in temp1? False

    身份运算符

    身份运算符用于比较两个标识符所引用对象的存储单元,计算结果为布尔值,包含两个运算符:is 和 is not,分别用于判断两个标识符是否引用自一个对象。关于存储单元的比较,涉及到对内存模型的理解,本节不做详述,留到后面章节介绍。

    第03课:字符串、列表和栈

    第04课:元组、字典、集合与队列

    第05课:条件、循环及其它语句

    第06课:抽象之函数

    第07课:抽象之类

    第08课:错误和异常

    第09课:模块和标准库

    第10课:文件和流

    第11课:数据库与网络编程

    第12课:图形用户界面

    第13课:实战之用 Python 写一个抢票软件

    第14课:实战之用 Python 写一个简易爬虫

    阅读全文: https://gitchat.csdn.net/column/5ad56a79af8f2f35290f6535?utm_source=blog0717_ysl

    展开全文
  • Python入门教程完整版(懂中文就能学会)

    万次阅读 多人点赞 2020-05-21 16:43:37
    今天本宝宝给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 言归正传,我来给大家介绍一下这套教程,希望每个小伙伴都沉迷学习,无法自拔! 本套教程学习时间15天 1-3天内容:为Linux基础命令 ...

    今天本宝宝给大家带来了干货,Python入门教程完整版完整版啊!完整版!

    言归正传,我来给大家介绍一下这套教程,希望每个小伙伴都沉迷学习,无法自拔!

     

    本套教程学习时间15天

    1-3天内容:为Linux基础命令

    4-13天内容:为Python基础教程14-15 天内容:为飞机大战项目演练

    第一阶段(1-3天):

    该阶段首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及Linux系统的文件目录结构让大家对Linux系统有一个简单的认识,同时知道为什么要学习Linux命令。然后我们会正式学习Linux命令

    1. 文件和目录命令:ls,cd,touch,mkdir,rm

    2. 拷贝和移动命令:tree,cp,mv

    3. 文件内容命令:cat,more,grep

    4. 远程管理命令:ifconfig,ping,SSH的工作方式简介以及ssh命令

    5. 用户权限及用户管理命令:chmod,chgrp,useradd,passwd,userdel

    6. 软件安装及压缩命令:apt简介及命令,tar,gzip压缩命令,bzip2压缩命令

    7. vim的基本使用

    第二阶段(4-10天)

    该阶段我们正式进入Python这门语言的学习,首先通过了解Python语言的起源,Python语言的设计目标,Python语言的设计哲学,Python语言的优缺点和面向对象的基本概念,以及Python语言的执行方式,还有Python集成开发环境PyCharm的使用为我们接下来的学习做铺垫。

    然后我们会学习int,string,float三种简单的变量类型,变量间的计算,变量的输入输出,if判断语句,while循环语句,for循环语句,break和continue的使用,函数的基本使用,模块的使用,列表,元组,字典三种高级变量,字符串的常用操作。

    接下来我们会通过一个名片管理系统的案例,把这一阶段的知识进行一个串联。在学习名片管理系统时,首先我们会学习怎么去搭建这一系统的框架,然后我们会分别实现新增名片,显示全部名片,查询名片,删除名片,修改名片这些功能。

    最后我们会学习语法的进阶内容,全局变量,局部变量,可变数据类型和不可变数据类型以及函数返回多个值,函数的缺省参数,多值参数,递归的基本使用。

    第三阶段(11-13天)

    该阶段我们会学习面向对象(OOP)这一重要的编程思想,首先学习的知识点有类和对象的基本概念,dir函数,self的作用,初始化方法__init__,内置函数__str__,__del__,单继承,方法重写,私有属性和方法,多继承,多态,类属性,静态方法。

    然后我们还会学习单例模式这一设计模式,异常的捕获,异常的抛出,from import局部导入,from import导入同名工具, from import导入所有工具,包的使用,制作模块,pip的使用以及文件的相关操作。

    第四阶段(14-15天)

    该阶段是项目演练阶段,我们会带领大家通过使用之前学习过的知识开发飞机大战这一经典游戏,项目中分别有游戏窗口,图像绘制,游戏循环,事件监听,精灵和精灵组以及创建敌机,创建英雄和发射子弹,碰撞检测等模块。

    需要教程的可以关注我哦~

    Python入门教程完整版(懂中文就能学会)

    http://yun.itheima.com/course/273.html?stt

    资料链接:

    https://pan.baidu.com/s/15BmUdw9AgOD2tI9xG6p1WA 提取码:w61i

     

    资源已更新,大家可以直接下载学习

    展开全文
  • 基于python入门学习

    千次阅读 2019-01-23 14:17:20
    安装常用的python解释器: 1.1,什么是ipython: IPython是一个交互式计算系统。主要包含三个组件:增加的交互式 “Python shell”, 解耦的双过程通信模型,交互式并行计算的架构。支持变量自动补全。 ...

    什么是python?

    Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于
    1991年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。Python语法简洁
    清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用
    其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
    

    python的发展历程以及标识:

    Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新
    的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个
    叫Monty Python的喜剧团体的爱好者。ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美
    和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是其非开放造成的。Guido 决心在
    Python 中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。就这样,Python在Guido手中诞生了。
    

    这里写图片描述
    简单的python练习:

    [kiosk@foundation84 mnt]$ python   直接输入python进入交互式界面
    Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
    [GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1 + 2
    3
    >>> 2 ** 3   可以进行计算
    8
    >>> print 'hello xfl'   可以打印''里面的内容,缺点就是没办法保存
    hello xfl
    >>> exit
    Use exit() or Ctrl-D (i.e. EOF) to exit    两种退出方式
    >>> exit()
    

    这里写图片描述

    [root@foundation84 kiosk]# vim xfl.py
    [root@foundation84 kiosk]# python xfl.py 
    hello python
    [root@foundation84 kiosk]# vim xfl.py
    

    这里写图片描述

    [root@foundation84 kiosk]# vim xfl.py 
    [root@foundation84 kiosk]# cat xfl.py    python2.几版本不支持中文会报错
    #print 是打印""内容到屏幕上
    print "hello python"
    [root@foundation84 kiosk]# python xfl.py 
      File "xfl.py", line 1
    SyntaxError: Non-ASCII character '\xe6' in file xfl.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
    

    这里写图片描述

    [root@foundation84 kiosk]# vim xfl.py 
    [root@foundation84 kiosk]# cat xfl.py    加进去中文声明才可以正确解读中文
    # _*_ coding:utf-8 _*_
    
    #print 是打印""内容到屏幕上
    print "hello python"
    [root@foundation84 kiosk]# python xfl.py 
    hello python
    

    这里写图片描述

    [root@foundation84 kiosk]# vim xfl.py 
    [root@foundation84 kiosk]# cat xfl.py 
    # _*_ coding:utf-8 _*_
    
    #print 是打印""内容到屏幕上
    print "hello python"
    	print "hello xfl"
    [root@foundation84 kiosk]# python xfl.py  不应该出现的缩进也会报错
      File "xfl.py", line 5
        print "hello xfl"
        ^
    IndentationError: unexpected indent
    

    这里写图片描述

    [root@foundation84 kiosk]# vim xfl.py 
    [root@foundation84 kiosk]# cat xfl.py 
    # _*_ coding:utf-8 _*_
    
    #print 是打印""内容到屏幕上
    print "hello python"print "hello xfl"
    [root@foundation84 kiosk]# python xfl.py  两行内容输入到一行会报错
      File "xfl.py", line 4
        print "hello python"print "hello xfl"
                                ^
    SyntaxError: invalid syntax
    

    这里写图片描述

    [root@foundation84 kiosk]# vim xfl.py 
    [root@foundation84 kiosk]# cat xfl.py 
    # _*_ coding:utf-8 _*_
    
    #print 是打印""内容到屏幕上
    print "hello python"
    print "hello xfl"
    [root@foundation84 kiosk]# python xfl.py 
    hello python
    hello xfl
    

    这里写图片描述

    [root@foundation84 mnt]# which python
    /bin/python
    [root@foundation84 mnt]# ls -lh /bin/python
    lrwxrwxrwx. 1 root root 7 Apr 28 18:30 /bin/python -> python2
    [root@foundation84 mnt]# ls -lh /bin/python2
    lrwxrwxrwx. 1 root root 9 Apr 28 18:30 /bin/python2 -> python2.7   
    软链接的作用就是在不知道python版本的情况下直接打开python交互式界面
    [root@foundation84 mnt]# ls -lh /bin/python2.7
    -rwxr-xr-x. 1 root root 7.0K Feb 11  2014 /bin/python2.7
    

    python代码实现的过程:

    编译性语言:速度快,跨平台性差
    解释性语言:速度慢,跨平台性好(python,shell)
    python适应于短期开发,易读性强,开发速度快,运行速度相对慢,面向对象将要做的事情分配给其他人,是一种解决
    问题的方式,重要的是分配给谁。
    python的源程序就是.py结尾,python统一缩进,没有;号
    

    这里写图片描述
    python程序是如何执行的?

    计算机中包含有较多的硬件,但是一个程序要运行,有三个核心的硬件,分别是:
    1.cpu(cpu 就是干活的,离开了 cpu 电脑就不能干活)
    中央处理器,是一块超大规模的集成电路
    负责处理数据/计算
    2.内存(临时存储数据 以 G 为单位 4G 8G 16G 32G)
    临时存储数据(断电之后,数据会消失)
    速度快
    空间小(单位价格高)
    3.硬盘(永久存储数据 以 T 为单位 1T=1024G)
    永久存储数据
    速度慢
    空间大(单位价格低)
    思考题:
    1.计算机中哪一个硬件设备负责执行程序?
    CPU
    2.内存的速度快还是硬盘的速度快?
    内存
    3.我们的程序是安装在内存中的,还是安装在硬盘中的?
    硬盘
    4.我买了一个内存条,有 500G 空间,这句话对麼?
    不对,内存条通常只有 4G/8G/16G/32G
    5.计算机关机之后,内存中的数据都会消失麼?
    是的
    程序执行的原理
    1.程序运行之前,程序是保存在硬盘中的
    2.当要运行一个程序的时候,操作系统会首先让 CPU 把程序复制到内存中,
    CPU 执行内存中方的代码程序,程序要执行,首先要被加载到内存。
    

    这里写图片描述
    这里写图片描述
    安装常用的python解释器:

    什么是ipython:

    IPython是一个交互式计算系统。主要包含三个组件:增加的交互式 “Python shell”,解耦的双过程通信模型,交互式并行
    计算的架构。支持变量自动补全。IPython 是一个 python 的交互式 shell,比默认的python shell好用得多,支持变量自动
    补全,自动缩进,支持 bash shell命令,内置了许多很有用的功能和函数。IPython 是基于BSD 开源的。IPython 为交互式
    计算提供了一个丰富的架构,包含:强大的交互式, shellJupyter 内核交互式的数据可视化工具灵活、可嵌入的解释器易于
    使用,高性能的并行计算工具。
    

    ipython的安装:

    [kiosk@foundation84 Desktop]$ su
    Password: 
    [root@foundation84 Desktop]# 
    [root@foundation84 Desktop]# ls
    3.jpg              Discuz_X3.2_SC_UTF8.zip                 python第一天
    59f01d9c531b7.jpg  phpMyAdmin-3.4.0-all-languages.tar.bz2  考试博客
    [root@foundation84 Desktop]# cd python第一天/
    [root@foundation84 python第一天]# ls
    ipython                            PycharmProjects  变量.pdf    变量的命名.pdf
    pycharm-community-2016.3.2.tar.gz  python           变量的命名  截图
    [root@foundation84 python第一天]# cd ipython/    自己下载的ipython安装包
    [root@foundation84 ipython]# ls
    openpgm-5.2.122-2.el7.x86_64.rpm
    python-ipython-3.2.1-1.el7.noarch.rpm
    python-ipython-console-3.2.1-1.el7.noarch.rpm
    python-ipython-gui-3.2.1-1.el7.noarch.rpm
    python-jsonschema-2.3.0-1.el7.noarch.rpm
    python-mistune-0.5.1-1.el7.x86_64.rpm
    python-path-5.2-1.el7.noarch.rpm
    python-pip-7.1.0-1.el7.noarch.rpm
    python-pygments-1.4-9.el7.noarch.rpm
    python-simplegeneric-0.8-7.el7.noarch.rpm
    python-zmq-14.3.1-1.el7.x86_64.rpm
    zeromq3-3.2.5-1.el7.x86_64.rpm
    [root@foundation84 ipython]# yum install * -y   安装ipython
    [root@foundation84 ipython]# ipython  打开ipython的交互式界面
    Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 3.2.1 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: exit()   两种退出方式还有一种是ctrl+D
    [root@foundation38 kiosk]# ipython 退出方式2
    Python 2.7.5 (default, Aug  2 2016, 04:20:16) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 3.2.1 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: 
    Do you really want to exit ([y]/n)? y   按组合键ctrl+D
    

    这里写图片描述
    ipython的简单使用:

    行注释和块注释(多行注释)
    python单行注释#和文字中间加空格
    程序是用来处理数据的,在程序的内部,为用户密码开辟的空间叫做变量
    变量必须先定义再使用:
    
    [root@foundation84 kiosk]# ipython   打开ipython交互界面
    Python 2.7.5 (default, Aug  2 2016, 04:20:16) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 3.2.1 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: name = 1   定义变量
    In [2]: name   不需要print可以直接调用变量名字
    Out[2]: 1
    exit()退出
    In [3]: exit()
    

    这里写图片描述

    In [1]: name='薛飞龙'
    
    In [2]: type(name)   字符串类型,type内置函数作用就是查看类型
    Out[2]: str
    
    In [3]: age = 18
    
    In [4]: type(age)   整型
    Out[4]: int
    
    In [5]: gender=True
    
    In [6]: type(gender)  布尔类型
    Out[6]: bool
    
    In [7]: height=1.8
    
    In [8]: type(height)   浮点型
    Out[8]: float
    
    In [9]: type(2**32)
    Out[9]: int
    In [10]: type(2**64)  长整型,整型的一种分类
    Out[10]: long
    

    这里写图片描述

    In [11]: i=10   不同类型之间可以进行计算
    
    In [12]: f=10.5
    
    In [13]: b=True
    
    In [14]: i*f
    Out[14]: 105.0
    
    In [15]: f/i
    Out[15]: 1.05
    
    In [16]: i+f
    Out[16]: 20.5
    
    In [17]: f - b   布尔类型True代表1False代表0
    Out[17]: 9.5
    
    In [18]: a='xuefeilong'
    
    In [19]: b='18sui'
    
    In [20]: a + b   字符串的拼接
    Out[20]: 'xuefeilong18sui'
    
    In [21]: a*10  多次打印字符串
    Out[21]: 'xuefeilongxuefeilongxuefeilongxuefeilongxuefeilongxuefeilongxuefeilongxuefeilongxuefeilongxuefeilong'
    
    In [22]: (a + b)*2
    Out[22]: 'xuefeilong18suixuefeilong18sui'
    

    这里写图片描述

    In [23]: a + 10  字符串类型与整型不可以直接相加进行计算,需要进行类型转换
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-23-2c64baa9fdb5> in <module>()
    ----> 1 a + 10
    
    TypeError: cannot concatenate 'str' and 'int' objects
    
    In [24]: raw_input('please input a number')  交互式输入
    please input a number123
    Out[24]: '123'
    
    In [25]: cc=raw_input('please input a number: ')    raw_input类型均为字符串类型,不可以乘法运算
    please input a number: 134
    
    In [26]: cc
    Out[26]: '134'
    
    In [27]: type(cc)
    Out[27]: str
    
    In [28]: age=raw_input('please input a number: ')   需要作乘法运算需要转换类型
    please input a number: 18
    
    In [29]: age
    Out[29]: '18'
    
    In [30]: type(age)
    Out[30]: str
    

    这里写图片描述
    什么是pycharm:

    pycharm是python的IDE,IDE集成开发环境带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、
    语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于
    支持Django框架下的专业Web开发
    

    安装pycharm:

    [kiosk@foundation84 ~]$ cd /home/kiosk/Desktop/
    [kiosk@foundation84 Desktop]$ ls
    3.jpg              Discuz_X3.2_SC_UTF8.zip                 考试博客
    59f01d9c531b7.jpg  phpMyAdmin-3.4.0-all-languages.tar.bz2
    aa~                python第一天
    [kiosk@foundation84 Desktop]$ cd python第一天/   自己下载的压缩包
    [kiosk@foundation84 python第一天]$ ls
    ipython                            PycharmProjects  变量的命名
    pycharm-community-2016.3.2         python           变量的命名.pdf
    pycharm-community-2016.3.2.tar.gz  变量.pdf         截图
    [kiosk@foundation84 python第一天]$ cd pycharm-community-2016.3.2/   已经解压成功
    [kiosk@foundation84 pycharm-community-2016.3.2]$ ls
    bin        help     Install-Linux-tar.txt  lib      plugins
    build.txt  helpers  jre                    license
    [kiosk@foundation84 pycharm-community-2016.3.2]$ cd bin/    进入到bin目录下
    [kiosk@foundation84 bin]$ ls
    format.sh       idea.properties  pycharm64.vmoptions  restart.py
    fsnotifier      inspect.sh       pycharm.png
    fsnotifier64    log.xml          pycharm.sh
    fsnotifier-arm  printenv.py      pycharm.vmoptions
    [kiosk@foundation84 bin]$ sh pycharm.sh   调用脚本打开pycharm的安装
    

    这里写图片描述
    详细的安装过程:

    询问是否从别的版本拷贝设置:
    这里写图片描述
    询问是否同意协议:
    这里写图片描述
    默认即可:
    这里写图片描述
    pycharm已经安装好了,接下来创建工程:
    这里写图片描述
    pycharm的一些友好提示:
    这里写图片描述
    创建一个工程:
    这里写图片描述
    点击创建的工程右键New->python file建立python文件
    这里写图片描述
    创建python文件成功:
    这里写图片描述
    pycharm的常规配置:

    更改代码大小:
    在File->Settings->Editor->Font设置字体大小
    

    这里写图片描述

    更改控制台字体大小:
    在File->Settings->Editor->Console Font设置控制台字体大小
    

    这里写图片描述

    添加代码注释:
    在File->Settings->Editor->Code style设置代码所加的注释方便别人阅读
    

    这里写图片描述
    更改成功之后打开一个新的python file就可以看到我们的设置
    这里写图片描述
    pycharm的简单练习:

    运行一个python file文件就是点击文件鼠标右键可以看到Run运行即可

    print 'hello xfl'
    

    这里写图片描述
    给代码加入注释:

    # 这是一个单行注释
    print 'hello python'
    # 注释1
    # 注释2
    这是一个多行注释/块注释
    """
    print 'have a nice day!'
    """
    什么时候需要使用注释?
    1.注释不是越多越好,对于一目了然的代码,不需要添加注释
    2.对于复杂的操作,应该在操作开始前写上若干注释
    3.对于不是一目了然的代码,应该在行尾添加注释
    (为了增加代码可读性。注释应该与代码保持至少两个空格)
    4.绝对不要描述代码
    """
    

    代码的规范性:

    #与注释内容之间至少保证一个空格。
    

    这里写图片描述
    断点的设置:

    设置断点是针对于一些复杂的代码,我们可以用设置断点来排错
    

    这里写图片描述
    变量的定义与输出:

    变量:
    什么是变量?
    #变量名只有在第一次出现才是定义变量(变量名再次出现,不是定义变量,而是直接使用之前定义的变量)
    变量的定义:
    在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
    等号(=)用来给变量赋值
    =左边是一个变量名,=右边是存储在变量中的值
    变量名 = 值  #变量定义之后,后续就可以直接使用了
    
    # 1.定义一个变量记录QQ号码
    qq_number = '123456'
    # 2.定义一个变量记录QQ密码
    qq_passwd = '6789'
    
    # 注意:在使用python解释器执行python程序的时候
    # 不能直接输入变量名,要输出变量内容,使用print
    print qq_number
    print qq_passwd 
    

    这里写图片描述
    变量的重复使用:

    水果的价格是8.5/斤,买了7.5斤的水果,计算付款金额。
    
    # 1.定义水果的价格
    price = 8.5
    # 2.挑选水果
    weight = 7.5
    # 3.计算付款金额
    money = price * weight
    money = money - 5
    print money
    # 变量名只有在第一次出现的时候才是定义变量
    # 变量名再次出现的时候,是直接使用之前定义的变量
    

    可以通过设置断点然后使用Debug的方式来查看变量再次使用的时候的情况
    这里写图片描述
    变量的类型:

    在 python 中定义变量是不需要指定类型(在其他很多高级语言中都需要)
    数据类新可以分为数字型和非数字型
    	数字型:
    	整型(int)
    	浮点型(float)
    	布尔型(bool)
    真 True 非 0 数 --- 非 0 即真
    非数字型:
    	字符串
    	列表
    	元组
    	字典
    使用 type 函数可以查看一个变量的类型:
    
    如果变量是 bool 型,在计算时
    	True 对应的数字是 1
    	False 对应的数字是 0
    字符串变量之间使用 + 拼接字符串
    在 python 中
    字符串之间可以使用 + 拼接生成新的字符串,字符串变量可以和整数使用 * 重复拼接相同的字符串
    字符串变量和字符串之间不能进行其他计算
    
    # str表示是一个字符串类型
    name = '薛飞龙'
    print name
    # int表示是一个整型
    age = 18
    print age
    weight = 135
    print weight
    # bool表示是一个布尔类型
    gender = True
    print gender
    # float表示是一个浮点型
    height = 1.35
    print height
    

    依旧可以通过设置断点然后使用Debug的方式来查看具体的类型
    这里写图片描述
    raw_input交互式调用变量:

    # 1.输入水果的单价
    price_str = raw_input('水果的单价为:')
    # 2.输入水果的重量
    weight_str = raw_input('水果的重量为:')
    price = float(price_str)     类型转换,raw_input输出为字符串类型不可以直接相乘
    weight = float(weight_str)
    # 3.计算付款金额
    money = price * weight
    print money
    # 注意:两个字符串之间是不能直接用乘法的,需要进行类型转换
    

    这里写图片描述
    raw_input交互式调用变量修改版:

    所谓输入,就是用代码获取用户通过键盘输入的信息
    关于函数:
    一个提前准备好的功能(别人或者自己写的代码),可以直接使用,而不用关心细节
    raw_input 函数实现键盘输入
    在python中可以使用 raw_input 函数从键盘等待用户的输入
    用户输入的任何内容 python 都认为是一个字符串
    
    # 1.输入水果的单价
    price = float(raw_input('水果的单价为:'))
    # 2.输入水果的重量
    weight = float(raw_input('水果的重量为:'))
    #price = float(price_str)
    #weight = float(weight_str)
    # 3.计算付款金额
    money = price * weight
    print money
    # 1.节约了空间,只需要为变量分配空间
    # 2.起名字方便,不需要为中间变量起名字
    

    这里写图片描述
    格式化输出:

    在 python 中可以使用 print 函数将信息输出到控制台如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符。
    
    % 被称为格式化操作符,专门用于处理字符串中的格式包含%的字符串,被称为格式化字符串
    % 和不同的字符连用,不同类型的数据需要使用不同的格式化字符
    %s	字符串
    %d 	有符号十进制整数,%06d 表示输出的整数显示位数字,不足的地方使用0补齐
    %f 	浮点数,%.02f 表示小数点后只显示两位
    %%	输出%
    %%f 	浮点数,%.02f 表示小数点后只显示两位
    语法格式:
    print '格式化字符串' % 变量 1
    print '格式化字符串' % (变量 1,变量 2...)
    
    #1.定义一个字符串常量 name
    #输出:我的名字叫薛飞龙,情多多关照
    name = '薛飞龙'
    #%s:字符串
    print '我的名字叫%s,请多多关照' % name
    
    #2.定义一个整形变量 student_num
    #输出:我的学号是:000001
    student_num = 6
    #%06d:表示不到六位就用0补齐
    print '我的学号是%06d' % student_num
    
    #3.定义小数 price weight money
    #输出:输出水果的单价是 购买了多少斤 总价是多少
    price = 3.8
    weight = 4.3
    money = price * weight
    #%f:浮点数 %.2f:保留两位小数
    # print '水果的单价是%.2f' % price
    # print '水果的重量是%.2f' % weight
    # print '支付的总价是%.2f' % money
    print '水果的单价是%.2f,水果的重量是%.2f,支付的总价是%.2f'\
          %(price,weight,money)
    #4.定义一个小数
    #输出:数据比例是10.00%
    scale = 0.5
    #print '数据比例是%.2f%%' % scale * 100
    print '数据比例是%.2f%%' %(scale * 100)
    

    这里写图片描述
    标示符和关键字:

    标识符:
    标识符就是程序员定义的变量名,函数名,名字需要有见名知义的效果,
    标识符可以由字母,下划线和数字组成,不能以数字开头,不能与关键字重名。
    关键字:
    关键字就是在python内部已经使用的标识符,关键字具有特殊的功能和含义
    开发者不允许定义和关键字相同的名字的标示符。
    
    通过以下命令可以查看python中的关键字
    #import关键字可以导入一个工具包
    #在python中不同的工具包,提供有不同的工具
    In [12]: import keyword
    In [13]: print keyword.kwlist
    ['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中的标识符是区分大小写的
    1.在定义变量时,为了保证代码格式, = 的左右两边该各保留一个空格
    2.在python中,如果变量名需要由两个或多个单词组成,可以按照以下方式命名(python中常用)
    	1.每个单词都使用小写字母
    	2.单词与单词之间使用_下划线连接
    	3.例如:first_name,last_name....
    驼峰命名法:(其他语言常用的命名法)
    当变量名是由两个或多个单词组成,还可以利用驼峰命令法来命名
    小驼峰命名法
    	第一个单词以小写字母开始,后续单词的首字母大写
    	firstName lastName
    大驼峰命名法
    	每一个单词的首字母都采用大写字母
    	FirstName LastName
    匈牙利命名法:
    	开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。
    	int iMyAge;"i"是int类型的缩写
    	char cMyName[10];"c"是char类型的缩写
    	float fManHeight;"f"是float类型的缩写
    
    展开全文
  • Python基础入门笔记(一)

    万次阅读 多人点赞 2018-09-16 09:51:37
    有关 Python: “人生苦短,我用PythonPython的设计哲学是“优雅”、“明确”、“简单”。 一、基础(变量和字符串) 首先:Python 每个语句结束可以不写分号 ;, 如 print('hello') 打印 hello 1、变量...

    前言(认识Python)

    既然学习 Python,那么至少得了解下这门语言,知道 Python 代码执行过程吧。Python 的历史有兴趣的百度百科下就有,这个不多说了。

    1、我们先来了解下什么是解释型语言和编译型语言?

    计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。

    编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是 C 语言。

    解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是 Ruby。

    通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

    此外,随着 Java 等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。用 Java 来举例,Java 首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说 Java 是一种先编译后解释的语言。再换成 C#,C# 首先是通过编译器将 C# 文件编译成 IL 文件,然后在通过 CLR 将 IL 文件编译成机器文件。所以我们说 C# 是一门纯编译语言,但是 C# 是一门需要二次编译的语言。同理也可等效运用到基于 .NET 平台上的其他语言。

    2、那么 Python 到底是什么?

    其实 Python 和 Java、C# 一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下 Python 程序的运行过程。

    当我们在命令行中输入 python hello.py 时,其实是激活了 Python 的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和 Java 一样,是编译。

    熟悉 Java 的读者可以想一下我们在命令行中如何执行一个 Java 的程序:

    javac hello.java
    java hello

    只是我们在用 Eclipse 之类的 IDE 时,将这两部给融合成了一部而已。其实 Python 也一样,当我们执行python hello.py时,它也一样执行了这么一个过程,所以我们应该这样来描述 Python,Python 是一门先编译后解释的语言。

    3、简述 Python 的运行过程

    在说这个问题之前,我们先来说两个概念,PyCodeObject 和 pyc 文件。

    我们在硬盘上看到的 pyc 自然不必多说,而其实 PyCodeObject 则是 Python 编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

    当 Python 程序运行时,编译的结果则是保存在位于内存中的 PyCodeObject 中,当 Python 程序运行结束时,Python 解释器则将 PyCodeObject 写回到 pyc 文件中。

    当 Python 程序第二次运行时,首先程序会在硬盘中寻找 pyc 文件,如果找到,则直接载入,否则就重复上面的过程。

    所以我们应该这样来定位 PyCodeObject 和 pyc 文件,我们说 pyc 文件其实是 PyCodeObject 的一种持久化保存方式。

    更详细内容参考:说说Python程序的执行过程

    最后:

    • “人生苦短,我用Python”

    • Python 的设计哲学是“优雅”、“明确”、“简单”。

    一、变量和字符串

    首先:Python 每个语句结束可以不写分号 ;, 如 print('hello') 打印 hello

    1.1 变量

    有过编程基础的话,变量就不用多说了。

    变量的命名法:

    • 驼峰式命名法
    • 帕斯卡命名法

    1.2 字符串

    1、基本介绍

    单引号 ' '或者双引号 " " 都可以,再或者 ''' ''' 三个引号,其中三个引号被用于过于长段的文字或者是说明,只要是三引号不完你就可以随意换行写下文字。

    ①字符串直接能相加,如:

    str1 = 'hi'
    str2 = 'hello'
    print(str1 + str2)

    运行结果:

    hi jaybo

    ②字符串相乘,如:

    string = 'bang!'
    total = string * 3 

    打印 total 结果:

    bang!bang!bang!

    2、字符串的分片与索引

    字符串可以通过 string[x] 的方式进行索引、分片。

    字符串的分片实际可以看作是从字符串中找出来你要截取的东西,复制出来一小段你要的长度,存储在另一个地方,而不会对字符串这个源文件改动。分片获得的每个字符串可以看作是原字符串的一个副本。

    先看下面这段代码:

    name = 'My name is Mike'
    print(name[0])
    'M'
    print(name[-4])
    'M'
    print(name[11:14]) # from 11th to 14th, 14th one is excluded
    'Mik'
    print(name[11:15]) # from 11th to 15th, 15th one is excluded
    'Mike'
    print(name[5:])
    'me is Mike'
    print(name[:5])
    'My na'

    如果感到困惑话,可以对照如下表格理解和分析:

    :两边分别代表着字符串的分割从哪里开始,并到哪里结束。

    name[11:14]为例,截取的编号从第11个字符开始,到位置为14但不包含第14个字符结束。而像name[5:]这样的写法代表着从编号为5的字符到结束的字符串分片。相反,name[:5]则代表着从编号为0的字符开始到编号为5但包含第5个字符分片。可能容易搞混,可以想象成第一种是从5到最后面,程序员懒得数有多少个所以就省略地写,第二种是从最前面到5,同样懒得写0,所以就写成了[:5]

    3、字符串的方法

    • replace 方法:第一个参数表示被替代部分,第二个参数表示替代成怎样的字符串。

    • 字符串填空,如:

      city = input("write the name of city:"")
      url = "http://apistore.baidu.com/mri.../weather?citypiny={}.format(city)

    4、问题

    问题1:

    num = 1
    string = '1'
    print(num + string)

    上面代码将出错?

    解释:整数型不能和字符串直接相加。可以先把该字符串转为整数型,再相加,即 int(string)

    num = 1
    string = '1'
    print(num + int(string))

    二、函数

    举些你可能已经使用过的函数例子:

    判断数据类型:type(str) 
    字符串类型数据转为整数型:int(str)
    ...

    通过观察规律不难发现,Python 中所谓的使用函数就是把你要处理的对象放到一个名字后面的括号就可以了。简单的来说,函数就是这么使用,可以往里面塞东西得到处理结果。这样的函数在 Python 中还有这些:

    以 Python3.5 版本为例,一个有 68 个这样的函数,它们被称为内建函数。这里內建的是指这些函数为安装好了 Python 就可以使用。

    2.1 函数格式

    定义函数的格式:

    其中,defreturn关键字

    注意: 函数缩进后面的语句被称为是语句块,缩进是为了表名语句的逻辑与从属关系。缩进这个问题不能忽视,否则会导致代码无法成功运行,这里需要特别注意。

    2.2 函数参数

    ①位置参数,举例,看代码:

    def trapezoid_area(base_up, base_down, height):
        return 1/2 * (base_up + base_down) * height

    接下来我们开始调用该函数:

    trapezoid_area(1,2,3)

    不难看出,填入的参数1,2,3分别对应着参数 base_up,base_down 和 height。这种传入参数的方式被称作为位置参数。

    ②关键词参数:在函数调用的时候,将每个参数名称后面赋予一个我们想要传入的值,如调用 fun1 函数时候:fun1(a=1, b=2, c=3)

    看下图:

    • 第一行的函数参数按照反序传入,因为是关键词参数,所以并不影响函数正常运作;
    • 第二行的函数参数反序传入,但是到了第三个却变成了位置函数,遗憾的是这种方式是错误的语法,因为如果按照位置来传入,最后一个应该是参数 height 的位置。但是前面 height 已经按照名称传入了值3,所以是冲突的。
    • 第三行的函数参数正序传入,前两个是以关键字的方式传入,最后一个以位置参数传入,但是位置参数不能再关键词参数后面,所以是错误的。
    • 第四行的函数参数正序传入,前两个是以位置的方式传入,最后一个以关键字参数传入,这个函数是可以正常运行的。

    ③不定长参数

    有时我们在设计函数接口的时候,可会需要可变长的参数。也就是说,我们事先无法确定传入的参数个数。

    Python 提供了一种元组的方式来接受没有直接定义的参数。这种方式在参数前边加星号 * 。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。例如:

    def print_user_info( name ,  age  , sex = '男' , * hobby):
        # 打印用户信息
        print('昵称:{}'.format(name) , end = ' ')
        print('年龄:{}'.format(age) , end = ' ')
        print('性别:{}'.format(sex) ,end = ' ' )
        print('爱好:{}'.format(hobby))
        return;
    
    # 调用 print_user_info 函数
    print_user_info( '小明' , 25, '男', '打篮球','打羽毛球','跑步')

    输出的结果:

    昵称:小明 年龄:25 性别:男 爱好:('打篮球', '打羽毛球', '跑步')

    通过输出的结果可以知道,* hobby 是可变参数,且 hobby 其实就是一个 tuple (元祖)。

    可变长参数也支持关键参数,没有被定义的关键参数会被放到一个字典里。这种方式即是在参数前边加 **,更改上面的示例如下:

    def print_user_info( name ,  age  , sex = '男' , ** hobby ):
        # 打印用户信息
        print('昵称:{}'.format(name) , end = ' ')
        print('年龄:{}'.format(age) , end = ' ')
        print('性别:{}'.format(sex) ,end = ' ' )
        print('爱好:{}'.format(hobby))
        return;
    
    # 调用 print_user_info 函数
    print_user_info( name = '小明' , age = 25 , sex = '男', hobby = ('打篮球','打羽毛球','跑步'))

    输出的结果:

    昵称:小明 年龄:24 性别:男 爱好:{'hobby': ('打篮球', '打羽毛球', '跑步')}

    通过对比上面的例子和这个例子,可以知道,* hobby 是可变参数,且 hobby 其实就是一个 tuple (元祖),** hobby是关键字参数,且 hobby 就是一个 dict (字典)。

    ④ 只接受关键字参数

    关键字参数使用起来简单,不容易参数出错,那么有些时候,我们定义的函数希望某些参数强制使用关键字参数传递,这时候该怎么办呢?将强制关键字参数放到某个*参数或者单个*后面就能达到这种效果,比如:

    def print_user_info( name , *, age, sex = '男' ):
        # 打印用户信息
        print('昵称:{}'.format(name) , end = ' ')
        print('年龄:{}'.format(age) , end = ' ')
        print('性别:{}'.format(sex))
        return;
    
    # 调用 print_user_info 函数
    print_user_info( name = '小明' ,age = 25 , sex = '男' )
    
    # 这种写法会报错,因为 age ,sex 这两个参数强制使用关键字参数
    #print_user_info( '小明' , 25 , '男' )
    print_user_info('小明',age='22',sex='男')

    通过例子可以看,如果 age , sex 不适用关键字参数是会报错的。

    2.3 匿名函数

    有没有想过定义一个很短的回调函数,但又不想用 def 的形式去写一个那么长的函数,那么有没有快捷方式呢?

    ——答案是有的。

    Python 使用 lambda 来创建匿名函数,也就是不再使用 def 语句这样标准的形式定义一个函数。

    匿名函数主要有以下特点:

    • lambda 只是一个表达式,函数体比 def 简单很多。
    • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
    • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

    基本语法:lambda [arg1 [,arg2,.....argn]]:expression

    示例:

    sum = lambda num1 , num2 : num1 + num2;
    print( sum( 1 , 2 ) )

    输出的结果: 3

    注意:尽管 lambda 表达式允许你定义简单函数,但是它的使用是有限制的。 你只能指定单个表达式,它的值就是最后的返回值。也就是说不能包含其他的语言特性了, 包括多个语句、条件表达式、迭代以及异常处理等等。

    匿名函数中,有一个特别需要注意的问题,比如,把上面的例子改一下:

    num2 = 100
    sum1 = lambda num1 : num1 + num2 ;
    
    num2 = 10000
    sum2 = lambda num1 : num1 + num2 ;
    
    print( sum1( 1 ) )
    print( sum2( 1 ) )

    你会认为输出什么呢?第一个输出是 101,第二个是 10001,结果不是的,输出的结果是这样:

    10001
    10001

    这主要在于 lambda 表达式中的 num2 是一个自由变量,在运行时绑定值,而不是定义时就绑定,这跟函数的默认值参数定义是不同的。所以建议还是遇到这种情况还是使用第一种解法。

    三、循环与判断

    3.1 布尔表达式和判断

    Python 中的布尔类型值:TrueFlase 其中,注意这两个都是首字母大写。

    但凡能够产生一个布尔值的表达式为布尔表达式

    1 > 2 # False
    1 < 2 <3 # True
    42 != '42' # True
    'Name' == 'name' # False
    'M' in 'Magic' # True
    number = 12
    number is 12 # True

    注1:不同类型的对象不能使用<><==>进行比较,却可以使用==!=

    注2:浮点类型和整数类型虽然是不同类型,但不影响比较运算。还有,不等于!= 可以写作<>

    话说,布尔类型可以比较吗?如:True > Flase,回答是可以的,TureFlase 对于计算机就像是 1 和 0 一样,所以结果是真,即True

    3.2 条件控制

    定义格式:

    用一句话该结构作用:如果…条件是成立的,就做…;反之,就做…

    所谓条件成立,指的是返回值为True的布尔表达式。

    3.3 循环

    ①for 循环

    把 for 循环所的事情概括成一句话就是:于…其中的每一个元素,做…事情。

    打印九九乘法表:

    for i in range(1, 10):
        for j in range(1, i+1):
            print('{}x{}={}\t'.format(i, j, i*j), end='')
        print()

    运行结果:

    1x1=1
    2x1=2   2x2=4
    3x1=3   3x2=6   3x3=9
    4x1=4   4x2=8   4x3=12  4x4=16
    5x1=5   5x2=10  5x3=15  5x4=20  5x5=25
    6x1=6   6x2=12  6x3=18  6x4=24  6x5=30  6x6=36
    7x1=7   7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49
    8x1=8   8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64
    9x1=9   9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81

    ②while 循环

    总结:只要…条件一成立,就一直做…

    在循环过程中,可以使用 break 跳过循环,使用 continue 跳过该次循环。

    在 Python 的 while 循环中,可以使用 else 语句,while … else 在循环条件为 false 时执行 else 语句块。如:

    count = 0
    while count < 3:
       print (count)
       count = count + 1
    else:
       print (count)

    运行结果:

    0
    1
    2
    3

    有 while … else 语句,当然也有 for … else 语句,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。如:

    for num in range(10,20):  # 迭代 10 到 20 之间的数字
       for i in range(2,num): # 根据因子迭代
          if num%i == 0:      # 确定第一个因子
             j=num/i          # 计算第二个因子
             print ('%d 是一个合数' % num)
             break            # 跳出当前循环
       else:                  # 循环的 else 部分
          print ('%d 是一个质数' % num)

    运行结果:

    10 是一个合数
    11 是一个质数
    12 是一个合数
    13 是一个质数
    14 是一个合数
    15 是一个合数
    16 是一个合数
    17 是一个质数
    18 是一个合数
    19 是一个质数

    四、数据结构

    Python 有四种数据结构,分别是:列表、字典、元组、集合。我们先从整体上认识一下这四种数据结构:

    list = [val1,val2,val3,val4] #列表
    dict = {key1:val1,key2:val2} #字典
    tuple = (val1,val2,val3,val4) #元组
    set = {val1,val2,val3,val4} #集合

    4.1 列表(List)

    1. 列表中的每个元素都是可变的;

    2. 列表中的元素是有序的,也就是说每个元素都有一个位置;

    3. 列表中可以容纳 Python 中的任何对象。如下:

      all_in_list = [
         1, #整数
         1.0, #浮点数
         'a word', #字符串
         print(1), #函数
         True, #布尔值
         [1,2], #列表中套列表
         (1,2), #元祖
         {'key':'value'} #字典
      ]

    另外,对于数据的操作,最常见的为增删改查。在此就省略了,网上找下相应函数练习下即可。

    4.2 字典(Dict)

    1. 字典中数据必须是以键值对的形式出现的;

    2. 逻辑上讲,键是不能重复的;

    3. 字典中的键(key)是不可变的,也就是无法修改的,而值(value)是可变的,可修改的,可以是任何对象。

      下面是个例子:

      NASDAQ_code = {
         'BIDU':'Baidu',
         'SINA':'Sina',
         'YOKU':'Youku'
      }

    一个字典中键与值并不能脱离对方而存在,如果你写成了 {'BIDU':} 会引发一个语法错误:invalid syntax

    如果试着将一个可变(mutable)的元素作为 key 来构建字典,比如列表:key_test = {[]:'a Test'} ,则会报一个错:unhashable type:'list'

    同时字典中的键值不会重复,即便你这么做,相同的键值也只能出现一次:a = {'key':123,'key':123}

    增删改查操作,在此省略了。

    备注:

    • 列表中用来添加多个元素的方法为extend,在字典中添加多个元素的方法为update()
    • 字典是不能切片的,即这样的写法是错误的:chart[1:4]

    4.3 元组(Tuple)

    元组可以理解为一个稳固版的列表,因为元组是不可以修改的,因此在列表中的存在的方法均不可以使用在元组上,但是元组是可以被查看索引的,方式和列表一样。

    letters = ('a, 'b', 'c', 'd')
    letters[0]

    相关的操作找代码练习下即可。

    4.4 集合(Set)

    集合则更接近数学上集合的概念。每一个集合中是的元素是无序的、不重复的任意对象,我们可以通过集合去判断数据的从属关系,有时还可以通过集合把数据结构中重复的元素减掉。

    集合不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加还有删除:

    a_set = {1,2,3,4}
    a_set.add(5)
    a_set.discard(5)

    4.5 数据结构的一些技巧

    4.5.1 多重循环

    如下:

    代码演示:

    for a, b in zip(num, str):
        print(b, 'is', a)

    4.5.2 推导式

    列表推导式的用法很好理解,可以简单地看成两部分。如下图:

    红色虚线后面的是我们熟悉的 for 循环的表达式,而虚线前面的可以认为是我们想要放在列表中的元素。

    代码演示:

    a = []
    for i in range(1, 11):
        a.append(i)

    可以换成列表解析的方式来写:

    b = [i for in i range(1, 11)]

    列表解析式不仅方便,并且在执行效率上要远远胜过前者。

    五、类的理解

    5.1 类的介绍

    类的定义:

    class CocaCola:
        formula = ['caffeine','sugar','water','soda']

    使用 class 来定义一个类,就如同创建函数时使用的 def 定义一个函数一样简单。如上你可以看到定义了名为 CocaCola 的类,接着在缩进的地方有一个装载着列表的变量的 formula,这个在类里面定义的变量就是类的变量,而类的变量有一个专有的术语,我们称之为类的属性。

    类的属性:

    • 类变量
    • 方法

    ①类的实例化:

    coke_for_me = CocaCola()
    coke_for_you = CocaCola()

    ②类变量属性的引用:CocaCola.formulacoke_for_me.formula

    类方法的使用:

    class CocaCola:
        formula = ['caffeine','sugar','water','soda']
        def drink(self):
            print('Energy!')
    coke = CocaCola()
    coke.drink()

    结果:

    Energy!

    5.2 self

    我想很多人会有关注到这个奇怪的地方——似乎没有派上任何用场的self参数。我们来说明下原理,其实很简单,我们修改下上面的代码:

    class CocaCola:
        formula = ['caffeine','sugar','water','soda']
        def drink(coke):    # 把self改为coke
            print('Energy!')
    coke = CocaCola()
    coke.drink()

    结果:

    Energy!

    怎么样,有些头绪了吧!这个参数其实就是被创建的实例本身。也就是将一个个对象作为参数放入函数括号内,再进一步说,一旦一个类被实例化,那么我们其实可以使用和与我们使用函数相似的方式:

    coke = CocaCola
    coke.drink() == CocaCola.drink(coke) #左右两边的写法完全一致

    被实例化的对象会被编译器默默地传入后面方法的括号中,作为第一个参数。上面两个方法是一样的,但我们更多地会写成前面那种形式。其实self这个参数名称是可以随意修改的(编译器并不会因此而报错)。

    和函数一样,类的方法也能有属于自己的参数,如下:

    class CocaCola:
        formula = ['caffeine','sugar','water','soda']
        def drink(self,how_much):
    
        if how_much == 'a sip':
            print('Cool~')
        elif how_much == 'whole bottle’:
            print('Headache!')
    ice_coke = CocaCola()
    ice_coke.drink('a sip')

    结果:

    Cool~

    5.3 魔术方法

    Python 的类中存在一些方法,被称为「魔术方法」,_init_()就是其中之一。

    class CocaCola():
        formula = ['caffeine','sugar','water','soda']
        def __init__(self):
            self.local_logo = '可口可乐'
        def drink(self): 
            print('Energy!')
    coke = CocaCola()
    print(coke.local_logo)

    作用:在创建实例之前,它做了很多事情。说直白点,意味着即使你在创建实例的时候不去引用 init_() 方法,其中的语句也会先被自动的执行。这给类的使用提供了极大的灵活性。

    class CocaCola:
        formula = ['caffeine','sugar','water','soda']
        def __init__(self,logo_name):
            self.local_logo = logo_name
        def drink(self):
            print('Energy!')
    coke = CocaCola('ݢݗݢԔ')
    coke.local_logo
    >>> 可口可乐

    有过面向对象编程经验很好理解了,也就是很多面向对象语言中的「构造函数」。

    5.4 类的继承

    如下代码:

    class CaffeineFree(CocaCola):
        caffeine = 0
        ingredients = [
            'High Fructose Corn Syrup',
            'Carbonated Water',
            'Phosphoric Acid',
            'Natural Flavors',
            'Caramel Color',
        ]
    coke_a = CaffeineFree('Cocacola-FREE')
    coke_a.drink()

    表示 CaffeineFree 继承了 CocaCola 类。

    类中的变量和方法可以被子类继承,但如需有特殊的改动也可以进行覆盖。

    Q1:类属性如果被重新赋值,是否会影响到类属性的引用?

    class TestA():
        attr = 1
    obj_a = TestA()
    
    TestA.attr = 24
    print(obj_a.attr)
    
    >>> 结果:24

    A1:会影响。

    Q2:实例属性如果被重新赋值,是否会影响到类属性的引用?

    class TestA:
        attr = 1
    obj_a = TestA()
    obj_b = TestA()
    
    obj_a.attr = 42
    print(obj_b.attr)
    
    >>> 结果:1

    A2:不会影响。

    Q3:类属性实例属性具有相同的名称,那么.后面引用的将会是什么?

    class TestA():
        attr =1
        def __init__(self):
            self.attr = 24
    
    obj_a = TestA()
    
    print(obj_a.attr)
    
    >>> 结果:24

    A3:类属性赋值后的值。

    总结:如图所示,Python 中属性的引用机制是自外而内的,当你创建了一个实例之后,准备开始引用属性,这时候编译器会先搜索该实例是否拥有该属性,如果有,则引用;如果没有,将搜索这个实例所属的类是否有这个属性,如果有,则引用,没有那就只能报错了。

    六、使用第三方库

    6.1 安装自己的库

    我们一般使用 pip 来进行第三方库的安装,那么自己的库要怎么安装呢?当然可以把自己的库提交到 pip 上,但是还要添加一定量的代码和必要的文件才行,在这里我们使用一个更简单的方法:
    1. 找到你的 Python 安装目录,找到下面的 site-packages 文件夹;
    2. 记住你的文件名,因为它将作为引用时的名称,然后将你写的 py 文件放进去。

    这个文件夹应该有你所安装的所有第三方库。如果你并不清楚你的安装路径,可以尝试使用如下方式搞清楚它究竟在哪里:

    import sys
    print(sys.path)

    打印出来的会是一个列表,列表中的第四个将是你的库安装路径所在,因此你也可以直接这么做:

    import sys
    print(sys.path[3])

    6.2 安装第三方库

    令人惊叹的第三方库

    如果用手机来比喻编程语言,那么 Python 是一款智能机。正如含量的手机应用出现在 iOS、Android 平台上,同样有各种各样的第三方库为 Python 开发者提供了极大的便利。

    当你想要搭建网站时,可以选择功能全面的 Django、轻量的 Flask 等 web 框架;当你想写一个小游戏的时候,可以使用 PyGame 框架;当你想做一个 爬虫时,可以使用 Scrapy 框架;当你想做数据统计分析时,可以使用 Pandas 数据框架……这么多丰富的资源可以帮助我们高效快捷地做到想做的事,就不需要再重复造轮子了。

    那么如何根据自己的需求找到相应的库呢?可以到 awesome-python.com 这个网站上按照分类去寻找,上面收录了比较全的第三方库。比如想要找爬出方面的库时,查看 Web Crawling 这个分类,就能看到相应的第三方库的网站与简介,可以进入库的网站查看更详细的介绍,并确认这个库支持的是 Python 2 还是 Python 3,不过绝大多数常用库已经都支持了这两者。另外也可以直接通过搜索引擎寻找。

    安装第三方库方式:

    ①最简单的方式:在 PyCharm 中安装

    1. 在 PyCharm 的菜单中选择:File –> Default Setting
    2. 搜索 project interpreter,选择当前 python 版本,点击“+”添加库
    3. 输入库的名称,勾选,并点击 Install Package

    在安装成功后, PyCharm 会有成功提示。也可以在 project interpreter 这个界面中查看安装了哪些库,点“-”号就可以卸载不再需要的库。

    ②最直接的方式:在终端/命令行中安装

    PyPI(Python Package Index)是 Python 官方的第三方库的仓库,PyPI 推荐使用 pip 包管理器来下载第三方库。

    1. 安装 pip

      在 Python 3.4 之后,安装好 Python 环境就可以直接支持 pip,你可以在终端/命令行里输入这句检查一下:pip --version (前提电脑 path 路径已经配置好了),如果显示 pip 版本,就说明 pip 已经成功安装了;如果发现没有安装,则根据不同系统如下方式安装:

    2. 使用 pip 安装库

      在安装好了 pip 之后,以后安装库,只需要在命令行里面输入:pip3 install PackageName(注:如果你想要安装到 Python 2 中,需要把 pip3 换成 pip)。补充:

      如果你安装了 Python 2 和 3 两种版本,可能会遇到安装目录的问题,可以换成:python3 -m pip install PackageName (注:如果你想安装到 Python2 中,需要把 Python3 换成 Python)

      如果遇到权限问题,可以输入:sudo pip install PackageName

      安装成功之后会提示:Successfully insyalled PackageName

      一些常用的 pip 指令:

      
      # pip 使用格式:pip <command> [options] package_name
      
      
      pip install package_name==1.9.2 # 安装指定版本的包
      pip install --upgrade package_name  # 更新指定的包
      pip uninstall package_name  # 卸载指定的包
      pip show package_name   # 查看所安装包的详细信息
      pip list    # 查看所有安装的包
      pip --help  # 查看帮助

    补充:如果下载很慢,可以考虑更改 pip 下载源。国内镜像有:

    # 国内常用的镜像
    http://pypi.douban.com/simple/            # 豆瓣
    http://mirrors.aliyun.com/pypi/simple/    # 阿里
    https://pypi.tuna.tsinghua.edu.cn/simple  # 清华
    http://pypi.mirrors.ustc.edu.cn/simple/   # 中国科学技术大学
    http://pypi.hustunique.com/simple/        # 华中理工大学

    更改方法:

    1. 临时使用,添加 -i--index 参数:pip install -i http://pypi.douban.com/simple/ flask
    2. Linux下永久生效的配置方法

      cd $HOME  
      mkdir .pip  
      cd .pip
      sudo vim pip.conf  
      
      
      # 在里面添加,trusted-host 选项为了避免麻烦是必须的,否则使用的时候会提示不受信任  
      
      [global]
      index-url=https://pypi.tuna.tsinghua.edu.cn/simple
      
      [install]
      trusted-host=pypi.tuna.tsinghua.edu.cn 
      disable-pip-version-check=true
      timeout = 6000 
    3. Windows 下永久生效的配置方法

      
      # a、进入如下目录(没有此目录或文件就自己创建下)
      
      C:\Users\username\AppData\Local\pip
      或
      C:\Users\username\pip
      
      
      # b、创建 “pip.ini” 文件(注意:以UTF-8 无BOM格式编码),添加如下内容
      
      [global]
      index-url=https://pypi.tuna.tsinghua.edu.cn/simple
      
      [install]
      trusted-host=pypi.tuna.tsinghua.edu.cn 
      disable-pip-version-check=true
      timeout = 6000 

    ③最原始的方式:手动安装

    进入 pypi.python.org,搜索你要安装的库的名字,这时候有 3 种可能:

    1. 第一种是 exe 文件,这种最方便,下载满足你的电脑系统和 Python 环境的对应的 exe,再一路点击 next 就可以安装。
    2. 第二种是 .whl 类文件,好处在于可以自动安装依赖的包。

      1. 到命令行输入pip3 install whell 等待执行完成,不能报错(Python 2 中要换成 pip)
      2. 从资源管理器中确认你下载的 .whl 类文件的路径,然后在命令行继续输入:cd C:\download,此处需要改为你的路径,路径的含义是文件所在的文件夹,不包含这个文件名字本身,然后再命令行继续输入:pip3 install xxx.whlxxx.whl 是你下载的文件的完整文件名。
    3. 第三种是源码,大概都是 ziptar.ziptar.bz2 格式的压缩包,这个方法要求用户已经安装了这个包所依赖的其他包。例如 pandas 依赖于 numpy,你如果不安装 numpy,这个方法是无法成功安装 pandas 的。

      1. 解压包,进入解压好的文件夹,通常会看见一个 setup.py 的文件,从资源管理器中确认你下载的文件的路径,打开命令行,输入:cd C:\download 此处需要改为你的路径,路径的含义是文件所在的文件夹,不包含这个文件名字本身
      2. 然后在命令行中继续输入:python3 setup.py install 这个命令,就能把这个第三方库安装到系统里,也就是你的 Python路径,windows 大概是在 C:\Python3.5\Lib\site-packages

      注:想要卸库的时候,找到 Python 路径,进入 site-packages 文件夹,在里面删掉库文件就可以了。

    本文内容大部分来源:

    展开全文
  • python学习目录,从入门到上手

    万次阅读 多人点赞 2020-04-27 22:08:06
    一、Python入门、环境搭建、变量、数据类型 二、Python运算符、条件结构、循环结构 三、Python函数 四、做一次综合练习,做一个控制台的员工管理 """ 需求:员工管理系统 功能: 1.添加员工信息 2.删除员工信息 3....
  • 2018最新黑马Python入门(完整版)

    千次阅读 2018-11-14 21:29:17
    │ │ 02-励志公式和python体验  │ │ 03-什么是操作系统  │ │ 04-不同领域的主流操作系统-01-桌面操作系统  │ │ 05-不同领域的主流操作系统-02-服务器操作系统  │ │ 06-不同领域的主流操作...
  • 如今 绝大多数互联网公司(谷歌、腾讯、阿里、百度、知乎等 )的很多职位要求应聘者必须具有 Python技能;学会了 Python 等于手握他们的敲门砖
  • │ │ 02-励志公式和python体验  │ │ 03-什么是操作系统  │ │ 04-不同领域的主流操作系统-01-桌面操作系统  │ │ 05-不同领域的主流操作系统-02-服务器操作系统  │ │ 06-不同领域的主流操...
  • Python基础教程,Python入门教程(非常详细)

    万次阅读 多人点赞 2019-06-25 13:26:47
    第1章 Python编程基础 1.编程语言是什么 2.编译型语言和解释型语言 3.Python是什么 4.Python具有哪些特点(优点和缺点) 5.学Python,不需要有编程基础! 6.学Python能干什么 7.Python 2.x和Python 3.x,初学...
  • Python入门学习难吗

    2020-10-22 10:42:35
    在学习python编程的中,可能最重要的就是兴趣,这是持续学习的原始动力,而只有持续学习才能真正学会python编程。 那么,python学起来会很难吗?下面就给大家具体讲一下。 python相对于其他语言,学习的方式还是有...
  • Python基础教程(一)

    万次阅读 多人点赞 2019-04-23 00:42:29
    Python基础教程 一、简介 Python的历史和为什么学习Python这里就不在赘述了。处于工作原因,对Python要进行深入的学习和研究,这里主要针对的就是Python具有的丰富和强大的库。 Python目前有两个版本,Python2和...
  • python简单爬虫代码,python入门

    万次阅读 多人点赞 2020-05-28 15:59:54
    python简单爬虫代码 python入门
  • Python入门

    千次阅读 多人点赞 2017-12-13 15:13:02
    Python入门目录1.Python基本数据类型 2.Python的print语句 3.Python的注释 4.Python的变量 5.Python中raw字符串与多行字符串 6.Python当中的Unicode字符串 7.Python中的整数和浮点数 8.Python中的布尔类型 9...
  • Python爬虫入门项目

    万次阅读 多人点赞 2019-09-21 00:02:43
    Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的...
  • python入门

    千次阅读 2014-12-30 21:21:22
    2个晚上将慕课网python入门看完 奉上链接  http://www.imooc.com/ 对于有其他语言基础的来说 python入门还是很快的 顺便截上几张图
  • Python入门教程

    万次阅读 多人点赞 2019-11-11 17:38:12
    我的Python入门教程 基础语法:B站海洋饼干叔叔——Python编程基础及应用 安装及案例:B站崔庆才python3入门到精通,推荐安装anaconda,里面包含python和一些常用的包,非常方便。另外, 可使用Pycharm或者jupyter...
  • 2019年python入门到精通(19天全)

    千人学习 2019-10-31 11:51:47
    python入门-数据类型、输入输出以及运算符 3. 流程控制-判断语句 4. 流程控制-循环 5. 数据序列-字符串 6. 数据序列-列表和元祖 7. 数据序列-字典和集合 8. 数据序列-公共操作...
  • Python 基础(一):入门必备知识

    万次阅读 多人点赞 2020-09-22 19:56:09
    Python 入门必备知识,你都掌握了吗?
  • 5本必读Python入门书籍,你都看过吗?(附福利)

    万次阅读 多人点赞 2018-06-07 22:38:27
    今天技术学派为大家准备了5本Python入门书籍,除了书籍小编还整理了3个常用的资源网站分享给大家。1.Python基础教程《Python基础教程》是经典的Python入门教程书籍,本书层次鲜明,结构严谨,特别是在最后几章中,...
1 2 3 4 5 ... 20
收藏数 284,884
精华内容 113,953
关键字:

python入门