Python学习笔记——Python和基础知识
Python优缺点
优点
简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
高层语言————当你用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平台!
解释性————这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
面向对象————Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
规范的代码————Python采用强制缩进的方式使得代码具有极佳的可读性。
缺点
- 运行速度,有速度要求的话,用C++改写关键部分吧。
- 国内市场较小(国内以python来做主要开发的,目前只有一些web2.0公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
- 中文资料匮乏(好的python中文资料屈指可数)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。
- 构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。
3. 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脚本。
科学计算
NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序。
桌面软件
PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。
服务器软件(网络软件)
Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。
游戏
很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。
构思实现,产品早期原型和迭代
YouTube、Google、Yahoo!、NASA都在内部大量地使用Python。
注释的分类
<1> 单行注释
以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
# 我是注释,可以在里写一些功能说明之类的哦print('hello world')
<2> 多行注释
'''我是多行注释,可以写很多很多行的功能说明这就是我牛X指出哈哈哈。。。'''''' 下面的代码完成 ,打印一首诗名字叫做:春江花月夜作者,忘了'''print('╔═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╗')print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')print('║ │春│滟│江│空│江│江│人│不│白│谁│可│玉│此│鸿│昨│江│斜│不│ ║')print('║ │江│滟│流│里│天│畔│生│知│云│家│怜│户│时│雁│夜│水│月│知│ ║')print('║ │潮│随│宛│流│一│何│代│江│一│今│楼│帘│相│长│闲│流│沉│乘│ ║')print('║ │水│波│转│霜│色│人│代│月│片│夜│上│中│望│飞│潭│春│沉│月│ ║')print('║ │连│千│绕│不│无│初│无│待│去│扁│月│卷│不│光│梦│去│藏│几│ ║')print('║春│海│万│芳│觉│纤│见│穷│何│悠│舟│徘│不│相│不│落│欲│海│人│ ║')print('║江│平│里│甸│飞│尘│月│已│人│悠│子│徊│去│闻│度│花│尽│雾│归│ ║')print('║花│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│ ║')print('║月│海│何│月│汀│皎│江│江│但│青│何│应│捣│愿│鱼│可│江│碣│落│ ║')print('║夜│上│处│照│上│皎│月│月│见│枫│处│照│衣│逐│龙│怜│潭│石│月│ ║')print('║ │明│春│花│白│空│何│年│长│浦│相│离│砧│月│潜│春│落│潇│摇│ ║')print('║ │月│江│林│沙│中│年│年│江│上│思│人│上│华│跃│半│月│湘│情│ ║')print('║ │共│无│皆│看│孤│初│望│送│不│明│妆│拂│流│水│不│复│无│满│ ║')print('║ │潮│月│似│不│月│照│相│流│胜│月│镜│还│照│成│还│西│限│江│ ║')print('║ │生│明│霰│见│轮│人│似│水│愁│楼│台│来│君│文│家│斜│路│树│ ║')print('║ │。│。│。│。│。│?│。│。│。│?│。│。│。│。│。│。│。│。│ ║')print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║')print('╚═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╝')
3. python程序中,中文支持
如果直接在程序中用到了中文,比如
print('你好')
如果直接运行输出,程序会出错:
解决的办法为:在程序的开头写入如下代码,这就是中文注释
#coding=utf-8
修改之后的程序:
#coding=utf-8print('你好')
运行结果:
你好
变量以及类型
<1>变量的定义
在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢?
大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账即可
如果在程序中,需要把2个数据,或者多个数据进行求和的话,那么就需要把这些数据先存储起来,然后把它们累加起来即可
在Python中,存储一个数据,需要一个叫做变量
的东西,如下示例:
num1 = 100 #num1就是一个变量,就好一个小菜篮子num2 = 87 #num2也是一个变量result = num1 + num2 #把num1和num2这两个"菜篮子"中的数据进行累加,然后放到 result变量中
- 说明:
- 所谓变量,可以理解为
菜篮子
,如果需要存储多个数据,最简单的方式是有多个变量,当然了也可以使用一个 - 程序就是用来处理数据的,而变量就是用来存储数据的
- 所谓变量,可以理解为
想一想:我们应该让变量占用多大的空间,保存什么样的数据?
<2>变量的类型
标示符和关键字
标示符由字母、下划线和数字组成,且数字不能开头
python中的标识符是区分大小写的
命名规则
见名知意
驼峰命名法
关键字
查看关键字:
and as assert break class continue def delelif else except exec finally for from globalif in import is lambda not or passprint raise return try while with yield
可以通过以下命令进行查看当前系统中python的关键字
格式化输出
<1>格式化操作的目的
比如有以下代码:
pirnt("我今年10岁")pirnt("我今年11岁")pirnt("我今年12岁")...
想一想:
在输出年龄的时候,用了多次"我今年xx岁",能否简化一下程序呢???
答:
字符串格式化
<2>什么是格式化
看如下代码:
age = 10print("我今年%d岁"%age)age += 1print("我今年%d岁"%age)age += 1print("我今年%d岁"%age)...
在程序中,看到了%
这样的操作符,这就是Python中格式化输出。
age = 18name = "xiaohua"print("我的姓名是%s,年龄是%d"%(name,age))
<3>常用的格式符号
下面是完整的,它可以与%符号使用列表:
格式符号 | 转换 |
---|---|
%c | 字符 |
%s | 通过str() 字符串转换来格式化 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写'e') |
%E | 索引符号(大写“E”) |
%f | 浮点实数 |
%g | %f和%e 的简写 |
%G | %f和%E的简写 |
3. 换行输出
在输出的时候,如果有\n
那么,此时\n
后的内容会在另外一行显示
print("1234567890-------") # 会在一行显示print("1234567890\n-------") # 一行显示1234567890,另外一行显示-------
4. 练一练
- 编写代码完成以下名片的显示
==================================姓名: dongGe QQ:xxxxxxx手机号:131xxxxxx公司地址:北京市xxxx==================================
输入
1.1 raw_input()
在Python中,获取键盘输入的数据的方法是采用 raw_input 函数(至于什么是函数,咱们以后的章节中讲解),那么这个 raw_input 怎么用呢?
看如下示例:
password = raw_input("请输入密码:")print '您刚刚输入的密码是:', password
运行结果:
注意:
- raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
- raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中
- raw_input()会把用户输入的任何值都作为字符串来对待
1.2 input()
input()函数与raw_input()类似,但其接受的输入必须是表达式。
>>> a = input()
123
>>> a
123
>>> type(a)
<type 'int'>
>>> a = input()
abc
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
>>> a = input()
"abc"
>>> a
'abc'
>>> type(a)
<type 'str'>
>>> a = input()
1+3
>>> a
4
>>> a = input()
"abc"+"def"
>>> a
'abcdef'
>>> value = 100
>>> a = input()
value
>>> a
100
input()接受表达式输入,并把表达式的结果赋值给等号左边的变量
2. python3版本中
没有raw_input()函数,只有input()
并且 python3中的input与python2中的raw_input()功能一样
运算符
python支持以下几种运算符
- 算术运算符
下面以a=10 ,b=20为例进行计算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
>>> 9/2.0
4.5
>>> 9//2.0
4.0
- 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
>>> a, b = 1, 2
>>> a
1
>>> b
2
- 复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | 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转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
举例
a = '100' # 此时a的类型是一个字符串,里面存放了100这3个字符b = int(a) # 此时b的类型是整型,里面存放的是数字100print("a=%d"%b)
if判断语句
<1>if判断语句介绍
- if语句是用来进行判断的,其使用格式如下:
if 要判断的条件:条件成立时,要做的事情
- demo1:
age = 30print "------if判断开始------"if age>=18:print "我已经成年了"print "------if判断结束------"
- 运行结果:
------if判断开始------我已经成年了------if判断结束------
- demo2:
age = 16print "------if判断开始------"if age>=18:print "我已经成年了"print "------if判断结束------"
- 运行结果:
------if判断开始------------if判断结束------
小总结:
- 以上2个demo仅仅是age变量的值不一样,结果却不同;能够看得出if判断语句的作用:就是当满足一定条件时才会执行那块代码,否则就不执行那块代码
注意:
- 代码的缩进为一个tab键,或者4个空格
<2>练一练
要求:从键盘获取自己的年龄,判断是否大于或者等于18岁,如果满足就输出“哥,已成年,网吧可以去了”
- 使用input从键盘中获取数据,并且存入到一个变量中
- 使用if语句,来判断 age>=18是否成立
<3>想一想
- 判断age大于或者等于18岁,使用的是 >=,还有哪些呢?
<1> 比较(即关系)运算符
python中的比较运算符如下表
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | 如a=3,b=3则(a == b) 为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a != b) 为 true. |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a > b) 为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a < b) 为 false. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a >= b) 为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a <= b) 为 true. |
<2> 逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
附录-推荐的python电子书
python学习路线图
优先级
入门:python核心编程
提高:python cookbook
其他
电子书下载地址:
链接:http://pan.baidu.com/s/1dFI4p7V 密码:7es5
Python学习笔记——Python和基础知识相关推荐
- Python学习--最完整的基础知识大全
##Python学习–最完整的基础知识大全 关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家! #####菜鸟教程python2 #####菜鸟教程python3 ...
- 小猪的Python学习之旅 —— 1.基础知识储备
小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...
- Python 学习笔记 D1(基础)
Python 学习笔记 D1(基础) 1.注释 #一个注释 ''' 多行注释 ''' 2.运算符与C++相同:+,-,*,/,%,>,<,=,>=,<=,==,!= 与C++不 ...
- Python学习笔记 1.0 基础内容篇章
Python学习笔记 1.0 基础内容篇章 注释 变量 一.定义变量 二.使用变量 bug和debug bug: Debug工具: 数据类型 认识数据类型 在定义数据类型时发生的错误: 数据类型的补表 ...
- 《Java并发编程实践》学习笔记之一:基础知识
<Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念: (2)进程:是一种活动,它是由一个动作序列组成 ...
- 前端学习笔记(js基础知识)
前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...
- Python学习笔记之入门基础
课程链接:Python入门教程--基础阶段_哔哩哔哩_bilibili Python学习笔记 注释 单行注释: * 多行注释: 1.多行前面加# 2."""注释信息&qu ...
- [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例
通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Pytho ...
- python bif_小猪的Python学习之旅 —— 1.基础知识储备
引言:(文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句"PHP是最好的语言" 这种家喻户晓的 ...
最新文章
- c#.net调用pdf2swf.exe将pdf文件转换为swf,vs中运行正常,布署IIS服务器部署转换后文字部分为空白...
- iOS开发系列--并行开发其实很容易
- Bootstrap table后端分页(ssm版)
- App Support
- deepin安装软件dpkg_如何修复Linux中损坏的软件包?
- Java开发自学教程!java从入门到精通txt下载
- pe系统安装win10系统
- html背景颜色渐变代码
- 记一次服务不能正常使用 tmp文件爆满
- socket多进程编程
- 压力测试-Jmeter脚本录制方案
- Unity3d中的走路动画
- 图像分类——猫狗大战问题
- Klin、Druid、ClickHouse核心技术对比
- python求素数积_python求质数的3种方法
- BigBrother的大数据之旅Day 15 sqoop
- oracle consistent gets,consistent gets在Oracle使用特例
- 超形象理解CDN,Spring cloud,Dubbo总结
- 一张交货单多次POD以及多次开票
- 视频文件怎样进行压缩缩小
热门文章
- jumpserver文件的上传和下载
- 直播系统开发中如何优化API接口的并发
- python实现网站的自动登录(selenium实现,带验证码识别)
- MIKE 21 教程 1.4 网格搭建界面介绍之高程数据输入与网格导出 (Mesh Generator 工具)
- Java 15 年老兵都不一定了解的冷知识!
- Bandit Walkthrough
- 自己做量化交易软件(39)小白量化实战12--利用神经网络程序预测价格上涨
- python提取数据指定列_Python:提取特定列数据并将其存储到变量中
- smali打印callstack,Java打印callstack,JNI c++ 打印callstack
- Portraiture中文版最新mac3.5版win5.0版插件介绍