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采用强制缩进的方式使得代码具有极佳的可读性。

缺点

  1. 运行速度,有速度要求的话,用C++改写关键部分吧。
  2. 国内市场较小(国内以python来做主要开发的,目前只有一些web2.0公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
  3. 中文资料匮乏(好的python中文资料屈指可数)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。
  4. 构架选择太多(没有像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岁,如果满足就输出“哥,已成年,网吧可以去了”

  1. 使用input从键盘中获取数据,并且存入到一个变量中
  2. 使用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和基础知识相关推荐

  1. Python学习--最完整的基础知识大全

    ##Python学习–最完整的基础知识大全 关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家! #####菜鸟教程python2 #####菜鸟教程python3 ...

  2. 小猪的Python学习之旅 —— 1.基础知识储备

    小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...

  3. Python 学习笔记 D1(基础)

    Python 学习笔记 D1(基础) 1.注释 #一个注释 ''' 多行注释 ''' 2.运算符与C++相同:+,-,*,/,%,>,<,=,>=,<=,==,!= 与C++不 ...

  4. Python学习笔记 1.0 基础内容篇章

    Python学习笔记 1.0 基础内容篇章 注释 变量 一.定义变量 二.使用变量 bug和debug bug: Debug工具: 数据类型 认识数据类型 在定义数据类型时发生的错误: 数据类型的补表 ...

  5. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  6. 前端学习笔记(js基础知识)

    前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...

  7. Python学习笔记之入门基础

    课程链接:Python入门教程--基础阶段_哔哩哔哩_bilibili Python学习笔记 注释 单行注释: * 多行注释: 1.多行前面加# 2."""注释信息&qu ...

  8. [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

    通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Pytho ...

  9. python bif_小猪的Python学习之旅 —— 1.基础知识储备

    引言:(文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句"PHP是最好的语言" 这种家喻户晓的 ...

最新文章

  1. c#.net调用pdf2swf.exe将pdf文件转换为swf,vs中运行正常,布署IIS服务器部署转换后文字部分为空白...
  2. iOS开发系列--并行开发其实很容易
  3. Bootstrap table后端分页(ssm版)
  4. App Support
  5. deepin安装软件dpkg_如何修复Linux中损坏的软件包?
  6. Java开发自学教程!java从入门到精通txt下载
  7. pe系统安装win10系统
  8. html背景颜色渐变代码
  9. 记一次服务不能正常使用 tmp文件爆满
  10. socket多进程编程
  11. 压力测试-Jmeter脚本录制方案
  12. Unity3d中的走路动画
  13. 图像分类——猫狗大战问题
  14. Klin、Druid、ClickHouse核心技术对比
  15. python求素数积_python求质数的3种方法
  16. BigBrother的大数据之旅Day 15 sqoop
  17. oracle consistent gets,consistent gets在Oracle使用特例
  18. 超形象理解CDN,Spring cloud,Dubbo总结
  19. 一张交货单多次POD以及多次开票
  20. 视频文件怎样进行压缩缩小

热门文章

  1. jumpserver文件的上传和下载
  2. 直播系统开发中如何优化API接口的并发
  3. python实现网站的自动登录(selenium实现,带验证码识别)
  4. MIKE 21 教程 1.4 网格搭建界面介绍之高程数据输入与网格导出 (Mesh Generator 工具)
  5. Java 15 年老兵都不一定了解的冷知识!
  6. Bandit Walkthrough
  7. 自己做量化交易软件(39)小白量化实战12--利用神经网络程序预测价格上涨
  8. python提取数据指定列_Python:提取特定列数据并将其存储到变量中
  9. smali打印callstack,Java打印callstack,JNI c++ 打印callstack
  10. Portraiture中文版最新mac3.5版win5.0版插件介绍