Python语言学习之菜鸟Python笔记-基础篇02:Python基础知识
小标 2019-05-08 来源 : 阅读 1090 评论 0

摘要:本文主要向大家介绍了Python语言学习之菜鸟Python笔记-基础篇02:Python基础知识,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言学习之菜鸟Python笔记-基础篇02:Python基础知识,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

Python语言学习之菜鸟Python笔记-基础篇02:Python基础知识

一、 简单认识python


1. Python发展背景



  • Python的作者,Guido von Rossum(吉多·范·罗苏姆,中国Python程序员都叫他 龟叔),荷兰人。1982年,龟叔从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,虽然拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的事情。


  • 在那个时候,龟叔接触并使用过诸如Pascal、C、Fortran等语言。这些语言的基本设计原则是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低。比如早期的Macintosh,只有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。有人甚至认为C语言的指针是在浪费内存。至于动态类型,内存自动管理,面向对象…… 别想了,那会让你的电脑陷入瘫痪。


  • 这种编程方式让龟叔感到苦恼。龟叔知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间,即使他已经准确的知道了如何实现。他的另一个选择是shell。Bourne Shell作为UNIX系统的解释器已经长期存在。UNIX的管理员们常常用shell去写一些简单的脚本,以进行一些系统维护的工作,比如定期备份、文件系统管理等等。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说,shell没有数值型的数据类型,加法运算都很复杂。总之,shell不能全面的调动计算机的功能。


  • 龟叔希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。


  • 1989年,为了打发圣诞节假期,龟叔开始写Python语言的编译器。Python这个名字,来自龟叔所挚爱的电视剧Monty Python's Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。龟叔作为一个语言设计爱好者,已经有过设计语言的尝试。这一次,也不过是一次纯粹的hacking行为。



2. Python语言的诞生



  • 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。


  • Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。 但这些语法规定让Python容易读。另一方面,Python聪明的选择服从一些惯例,特别是C语言的惯例,比如回归等号赋值。龟叔认为,如果“常识”上确立的东西,没有必要过度纠结。


  • Python从一开始就特别在意可拓展性。Python可以在多个层次上拓展。从高层上,你可以直接引入.py文件。在底层,你可以引用C语言的库。Python程序员可以快速的使用Python写. py文件作为拓展模块。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.so文件引入到Python中使用。Python就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更改。


  • 最初的Python完全由龟叔本人开发。Python得到龟叔同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。龟叔和一些同事构成Python的核心团队。他们将自己大部分的业余时间用于hack Python。随后,Python拓 展到研究所之外。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python程 序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员。Python开始流行。




人生苦短,我用python



3. 关键点常识



  • Python的发音与拼写


  • Python的作者是Guido van Rossum(龟叔)


  • Python正式诞生于1991年


  • Python的解释器如今有多个语言实现,我们常用的是CPython(官方版本的C语言实现),其他还有Jython(可以运行在Java平台)、IronPython(可以运行在.NET和Mono平台)、PyPy(Python实现的,支持JIT即时编译)


  • Python目前有两个版本,Python2和Python3,最新版分别为2.7.15和3.7.0


  • Life is shot, you need Python. 人生苦短,我用Python。



4. Python优缺点


优点



  • 简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。


  • 易学:Python极其容易上手。


  • 免费、开源:Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。


  • 高层语言:当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。


  • 可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!


  • 解释型语言:Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。


  • 面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。


  • 可扩展性:如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。


  • 丰富的库:Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。


  • 规范的代码:Python采用强制缩进的方式使得代码具有极佳的可读性。



缺点



  • Python语言非常完善,没有明显的短板和缺点,唯一的缺点就是执行效率慢,这个是解释型语言所通有的,同时这个缺点也将被计算机越来越强大的性能所弥补。



5. Python应用场景



  • Web应用开发

    Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以让程序员轻松地开发和管理复杂的Web程序。


  • 操作系统管理、服务器运维的自动化脚本

    在很多操作系统里,Python是标准的系统组件。 大多数Linux发行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端下直接运行Python。有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用操作系统功能的库。通过pywin32这个第三方软件 包,Python能够访问Windows的COM服务及其它Windows API。使用IronPython,Python程序能够直接调用.Net Framework。一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。


  • 网络爬虫

    Python有大量的HTTP请求处理库和HTML解析库,并且有成熟高效的爬虫框架Scrapy和分布式解决方案scrapy-redis,在爬虫的应用方面非常广泛。


  • 科学计算

    NumPy、SciPy、Pandas、Matplotlib可以让Python程序员编写科学计算程序。


  • 桌面软件

    PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。


  • 服务器软件(网络软件)

    Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。


  • 游戏

    很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。


  • 构思实现,产品早期原型和迭代

    Google、NASA、Facebook都在内部大量地使用Python。



二、第一个Python程序




  1. 打开 Pycharm,选择 Create New Project,创建一个新项目。


    打开Python




  2. 选择 Pure Python 表示创建一个纯Python程序项目, Location 表示该项目保存的路径,Interpreter 表示使用的Python解释器版本,最后点击 Create 创建项目。


    创建程序




  3. 右击项目,选择New,再选择Python File


    创建程序




  4. 在弹出的对话框中输入的文件名HelloPython,点击OK,表示创建一个Python程序的文本文件,文本文件后缀名默认.py


    输入字符串



  5. 输入以下代码,并右击空白处,选择Run运行,表示打印一个字符串"Hello World!"



print("Hello World!")


运行py文件



  1. 运行成功后,Pycharm Console窗口将显示我们的输出结果。


    显示结果




三、注释


1. 注释的引入




  • 看以下程序示例(未使用注释)


    未使用注释




  • 看以下程序示例(使用注释)


    使用注释



  • 总结

    注释的作用:通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。



2. 注释的分类


单行注释


以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用


# 我是注释,可以在里写一些功能说明
print('hello world')


多行注释


'''
我是多行注释,可以写很多很多行的功能说明
下面的代码完成 ,打印一首诗
名字叫做:XXXXXX
'''


python程序中,中文支持


python3中,是默认支持中文的,但是在python2中就需要一定的额外操作才可以。


python2中,如果直接在程序中用到了中文,比如:


print('你好')


如果直接运行输出,程序会出错:



error


解决的办法为:在程序的开头写入如下代码,这就是中文注释:


#coding=utf-8


修改之后的程序:


#coding=utf-8
print('你好')


运行结果:



你好



注意:

在python的语法规范中推荐使用的方式:


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


四、变量以及类型


1. 变量的定义


在程序中,需要把2个数据,或者多个数据进行求和的话,那么就需要把这些数据先存储起来,然后把它们累加起来即可。


在Python中,存储一个数据,需要一个叫做变量的东西,如下示例:


num1 = 100 #num1就是一个变量,就好一个小菜篮子

num2 = 87  #num2也是一个变量

result = num1 + num2 #把num1和num2这两个"菜篮子"中的数据进行累加,然后放到 result变量中



  • 说明:


    • 所谓变量,可以理解为菜篮子,如果需要存储多个数据,最简单的方式是有多个变量,当然了也可以使用一个。


    • 程序就是用来处理数据的,而变量就是用来存储数据的。




2. 变量的类型


为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型的,如下所示:




  • Numbers (数字)


    • int (有符号整型)


    • long (长整型)


    • float (浮点型)


    • complex (复数)




  • 布尔类型


    • True


    • False



  • String (字符串)


  • List (列表)


  • Tuple (元组)


  • Dictinary (字典)



怎样知道一个变量的类型呢?



  • 在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别。


  • 可以使用type(变量的名字),来查看变量的类型。



五、标识符和关键字


1. 标识符


什么是标识符?



开发人员在程序中自定义的一些符号和名称

标识符是自己定义的,如变量名、函数名等



2. 标识符的规则



  • 标识符由字母、下划线和数字组成,且数字不能开头



  • python中的标识符是区分大小写的



    区分大小写




3. 命名规则


见名知意



起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可读性) 比如: 名字 就定义为 name , 定义学生 用 student。



驼峰命名法



  • 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog


  • 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName


  • 还有一种命名法是用下划线“_”来连接所有的单词,比如send_buf



4. 关键字


什么是关键字



python一些具有特殊功能的标识符,这就是所谓的关键字。

关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符。



查看关键字:


可以在Python Shell通过以下命令进行查看当前系统中python的关键字:


>>> import keyword
>>> keyword.kwlist



关键字不需要记,随着以后的使用自然会记住。



六、输出


1. 普通的输出


python中变量的输出


# 打印提示
print('hello world')
print('萨瓦迪卡---泰语,你好的意思')


2. 格式化输出


格式化操作的目的


比如有以下代码:


pirnt("我今年10岁")
pirnt("我今年11岁")
pirnt("我今年12岁")
    ...


在输出年龄的时候,用了多次"我今年xx岁",能否简化一下程序呢???



字符串格式化



什么是格式化


看如下代码:


age = 10
print("我今年%d岁" % age)

age += 1
print("我今年%d岁" % age)

age += 1
print("我今年%d岁" % age)

...


在程序中,看到了%这样的操作符,这就是Python中格式化输出。


age = 18
name = "xiaohua"
print("我的姓名是%s, 年龄是%d" % (name, age))


常用的格式符号



格式符号转换
%c字符
%s字符串
%d有符号十进制整数
%u无符号十进制整数
%o八进制整数
%x十六进制整数(小写字母0x)
%X十六进制整数(大写字母0X)
%f浮点数
%e科学计数法(小写'e')
%E科学计数法(大写“E”)
%g%f和%e 的简写
%G%f和%E的简写


3. 换行输出


在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示


print("1234567890-------1") # 会在一行显示
print("1234567890\n-------1") # 一行显示1234567890,另外一行显示-------1


七、输入



怎样才能让程序知道咱们刚刚输入的是什么呢??



1. python2版本中


raw_input()


在Python中,获取键盘输入的数据的方法是采用 raw_input 函数(至于什么是函数,以后的章节中讲解),那么这个 raw_input 怎么用呢?


看如下示例:


password = raw_input("请输入密码:")
print('您刚刚输入的密码是:%d' % password)


运行结果:



结果


注意:



  • raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示。


  • raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中。


  • raw_input()会把用户输入的任何值都作为字符串来对待。



input()


input()函数与raw_input()类似,但其接受的输入必须是表达式。


>>> a = input() 
123
>>> a
123
>>> type(a)
<type 'int'>

>>> b = input()
"abc"
>>> b
'abc'
>>> type(b)
<type 'str'>


input()接受表达式输入,并把表达式的结果赋值给等号左边的变量


2. python3版本中


没有raw_input()函数,只有input()


并且 python3中的input与python2中的raw_input()功能一样。


八、运算符



python支持以下几种运算符



1. 算术运算符


下面以a=10 ,b=20为例进行计算:



运算符描述实例
+两个对象相加 a + b 输出结果 30
-得到负数或是一个数减去另一个数 a - b 输出结果 -10
*两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/b / a 输出结果 2
//取整除返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
%取余返回除法的余数 b % a 输出结果 0
**指数a**b 为10的20次方, 输出结果 100000000000000000000



注意:混合运算时,优先级顺序为: ** 高于 * / % // 高于 + - ,为了避免歧义,建议使用 () 来处理运算符优先级。




并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算。



>>> 10 + 5.5 * 2
21.0
>>> 10 + (5.5 * 2)
21.0


2. 赋值运算符



运算符描述实例
=赋值运算符把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 * 3,结果num的值为7


# 单个变量赋值
>>> num = 10
>>> num
10

# 多个变量赋值
>>> num1, num2, f1, str1 = 100, 200, 3.14, "hello"
>>> num1
100
>>> num2
200
>>> f1
3.14
>>> str1
"hello"


复合赋值运算符



运算符描述实例
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a


九、数据类型转换


常用的数据类型转换



函数说明
int(x [,base ])将x转换为一个整数
float(x )将x转换为一个浮点数
complex(real [,imag ])创建一个复数,real为实部,imag为虚部
str(x )将对象 x 转换为字符串
repr(x )将对象 x 转换为表达式字符串
eval(str )用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s )将序列 s 转换为一个元组
list(s )将序列 s 转换为一个列表
chr(x )将一个整数转换为一个Unicode字符
ord(x )将一个字符转换为它的ASCII整数值
hex(x )将一个整数转换为一个十六进制字符串
oct(x )将一个整数转换为一个八进制字符串
bin(x )将一个整数转换为一个二进制字符串


举例


>>> # int(): 将数据转换为 int 类型
...
>>> str1 = "10"
>>> # int() 默认按10进制转换后显示
... num1 = int(str1)
>>>
>>> # int() 处理浮点数,只留下整数部分,舍弃小数部分(并不是四舍五入操作)
... num2 = int(3.74)
>>> print(num2)
3
>>>
>>> """
... num1 = int(str1, 8) # 第二个参数为8,表示按8进制转换后显示,结果为 8
... num1 = int(str1, 16) # # 第二个参数为16,表示按16进制转换后显示,结果为 16
... #01 02 03 04 05 06 07 10
... #01 02 ... 0B 0C 0D 0E 0F 10
... print(num1)
... """
>>>
>>> # float() 将数据转化为浮点数
... str2 = "3.14"
>>> f1 = float(str2)
>>> print(type(f1))
<class 'float'>
>>>
>>> f2 = float(10)
>>> print(f2)
10.0
>>>
>>> # complex() 创建复数: 第一个参数是复数的实部,第二个参数是复数的虚部
... c1 = 10 + 4j
>>> c2 = complex(10, 4)
>>>
>>> print(c1)
(10+4j)
>>> print(c2) # 等同与c1
(10+4j)
>>>
>>> # str() : 转换为 字符串类型
... num1 = 10
>>> f1 = 3.14
>>>
>>> print(type(str(num1)))
<class 'str'>
>>> print(type(str(f1)))
<class 'str'>
>>>
>>> # repr(): 转换为表达式字符串
... num1 = 10
>>> print(type(repr(num1)))
<class 'str'>
>>>
>>>
>>> # eval(): 将字符串形式的数据,转换为原本的类型
... str1 = "3.14"
>>> print(type(eval(str1)))
<class 'float'>
>>>
>>> str2 = "[10, 20, 30]"
>>> l = eval(str2)
>>> print(type(l))
<class 'list'>
>>>
>>>
>>> # chr: 将一个整数转换为对应的 Unicode 字符
... s = chr(1065)
>>> print(s)
Щ
>>>
>>> # ord :将一个字符转换为对应的字符编码数字
... n = ord("A")
>>> print(n)
65
>>>
>>> # bin: 将一个整数转换为二进制
... print(bin(1024)) # 0b 开头表示二进制数
0b10000000000
>>>
>>> # oct:将一个整数转换为八进制
... print(oct(1024)) # 0o 开头表示八进制数
0o2000
>>>
>>> # hex: 将一个整数转换为十六进制
... print(hex(1024)) # 0x 开头表示十六进制
0x400
>>>

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程