# Python第一节课

  • Post author:
  • Post category:python

Python学习 第一天

1.Python的发展及其概况

1.1Python出生及发展

  • 1989,为了度过圣诞假期,Guido开始编写Python语言编译器。Python这个名字来自Guido的喜爱的电视连续剧《蒙蒂蟒蛇的飞行马戏团》。他希望新的语言Python能够满足他在C和Shell之间创建全功能、易学、可扩展的语言的愿景。
  • Python发展史
    1989年由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年
    Granddaddy of Python web frameworks, Zope 1 was released in 1999
    Python 1.0 – January 1994 增加了 lambda, map, filter and reduce.
    Python 2.0 – October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
    Python 2.4 – November 30, 2004, 同年目前最流行的WEB框架Django 诞生
    Python 2.5 – September 19, 2006
    Python 2.6 – October 1, 2008
    Python 2.7 – July 3, 2010
    Python 3.0 – December 3, 2008
    Python 3.1 – June 27, 2009
    Python 3.2 – February 20, 2011
    Python 3.3 – September 29, 2012
    Python 3.4 – March 16, 2014
    Python 3.5 – September 13, 2015

1.2Python是什么样的编程语言

  • 高级计算机语言:高级语言与低级语言的区别:高级语言大部分不能直接跟硬件打交道,这使得相对来的程序运行速度降低,总之一句话来说那种语言更接近人性化的语言就更高级。

  • 动态:动态性语言是指在程序运行期间才给变量指定数据的类型,常见于python和Ruby,而静态类型语言则恰好相反,在写程序代码的时候就要指定变量的类型

  • 弱类型:

    C语言中,一个变量只能定义为一种类型,如float类型,那么它就只能是float类型而不能在不发生转化的情况下赋予int类型,这就是强制的具体体现。
    而python不是,python中的变量可以任意的复制,而没有类型的界限。这就是弱类型

  • 编译型:编译型语言是离不开解释程序的,这也导致了解释性语言对于运行时候的速度比价慢,解释型语言只要有解释器,移植起来比较方便,而编译型语言则要对于不同的系统进行编译,是的工作繁琐,且在调试程序的时候比较慢

    综上Python时一种编译型,动态弱类型的高级计算机语言。

1.3Python优缺点

Python的优点

1.作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

​ 2.易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。

​ 3.Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。

​ 4.可移植性————由于它的开源本质,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平台!

5.在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

6.Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

7. 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

8.丰富的库。Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

9. Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。

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

python语言的缺点:

很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)

1.运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。

2.既是优点也是缺点,python的开源性是的Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。国随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用他。

3. 构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多

1.4Python的种类

  • CPython:
    当 从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。
  • IPython
    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。
  • PyPy
    PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。
  • Jython
    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
  • IronPython
    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

在Python的解释器中,使用广泛的是CPython,对于Python的编译,除了可以采用以上解释器进行编译外,技术高超的开发者还可以按照自己的需求自行编写Python解释器来执行Python代码,十分的方便!

2.Python基础

2.1两条常用函数语句

  • print()函数
print("Hello,Python")
print("to be,or not to be,it's a question")
print("to be,or not to be,it's up to you ")
print("Make it")
print("面朝大海,春暖花开")

打印语句

print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.

  • input()函数

作用:从外部获取值

用法:Help on built-in function input in module builtins:

input(prompt=None, /)
Read a string from standard input. The trailing newline is stripped.

The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.

返回值为字符串

a=input(‘please input something:’)
please input something:i’m icon man
a
“i’m icon man”
type(a)
<class ‘str’>

2.2注释

  • 单行注释:
# 这是单行注释

多行注释:

三个单引号或者三个双引号

'''
多行注释
'''

demo:

print("Hello,Python") #向Python致敬
'''
下面是一些东西
'''
print("to be,or not to be,it's a question")
print("to be,or not to be,it's up to you ")
print("Make it")
print("面朝大海,春暖花开")

2.3 运行python程序的三种方式

  • 1.解释器环境运行

  • 2.脚本运行

  • 3.IDE

    • pycharm

    • sublime

    • VS Code

    • Atom

2.4 Python中的常见数据类型

  • 数据的概念:

  • Python中数据类型(常见):

    • 数字(number)
      • 整型 int
      • 浮点型 float
      • 布尔型 bool
      • 复数 complex
    • 字符串(string)
  • 列表(list)

  • 元组(tuple)

  • 字典(dict)

  • 集合(set)

2.5 变量和常量

变量:没有固定值,能够改变的量

  • 概念:

    • 程序可操作性的存储区的名称;

    • 程序运行时存储区中能够改变的数据;

    • 每个变量都有自己特定的数据类型

  • 作用:

  • 将数据存储到内存

  • 定义:

    • 命名

      • 规则:
        • 必须是字母,下划线,数字组合
        • 不能数字开头
        • 不可以是Python中的关键字
        • 注意:见名知意,区分大小写,在Python中单双下划线开头的变量有特殊用途,一般不推荐使用
    • 定义:

      val_name = 初始值
      

      拓展:

      关键字的查看:

      >>> import keyword
      >>> keyword.kwlist
      ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', '
      def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if',
       'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'retu
      rn', 'try', 'while', 'with', 'yield']
      

      以下变量那些是正确的:_city

    • 类型测试type()

      type(val_name)
      
    • 内存地址id()

      id(val_name)
      

常量:不变化的量

通常用大写,如

PI=3.14159
>>> g=1,2,3 #默认逗号为创建元组
>>> x,y,z=g
>>> g
(1, 2, 3)
>>> type(g)
<class 'tuple'>
>>> type(x)
<class 'int'>
>>>

互换两元素的值

>>> a=123
>>> b=234
>>> a=a^b
>>> b=a^b
>>> a=a^b
>>> a
234
>>> b
123
>>> x=123
>>> y=234
>>> x,y=y,x
>>> x
234
>>> y
123

2.6数字

  • 整型(int)

    • 32bit,取值范围

      2

      31

      2

      31

      1

      -2^{31} – 2^{31}-1

      2312311

    • 64bit,取值范围

      2

      63

      2

      63

      1

      -2^{63} -2^{63}-1

      2632631

      以前Python区分短整型和长整型,现在不区分

  • 浮点型(float)

    • 带有小数点的数字
  • 布尔型(bool)

    • ture
    • false
  • 复数型(complex)

    • 实部(complex.real)
    • 虚部(complex.iamg)
    • 共轭(complex.conjugate())

2.7常见数学函数

函数名 描述
abs(x) 绝对值
pow(x,y)

x

y

x^y

xy

round(x,[n]) 四舍五入返回n位小数的值
math.exp(x) 返回e的x次幂
math.fabs(x) 返回x的浮点型绝对值
math.ceil(x) 返回数字的’上入整数’
math.floor(x) 返回数字的’下舍整数’
math.log(x,y) 返回以y为底x为基的对数的值
math.modf(x) 返回浮点数的小数部分和整数部分
math.sqrt(X) 返回x的平方根

m

a

x

x

,

y

,

z

)

max(x,y,z)

maxx,y,z)

返回最大值

m

i

n

(

x

,

y

,

z

)

min(x,y,z)

min(x,y,z)

返回最小值

2.8表达式与运算符

  • 表达式

    • 由变量,常量和运算符组成的式子
  • 运算符

    • 算数
    • 比较
    • 逻辑
    • 赋值
    • 成员
    • 身份

Python算数运算符

运算符 描述 实例
+ 相加/拼接 a+b
相减/求差集 a-b
* 相乘/重复 a *b
/ 相除 a/b
** 幂运算 a **b
% 取余数 a%b
// 取整数 a//b

拓展

divmod(a,b) 返回a除以b的商和余数(以元组形式)

>>> divmod(33,5)
(6, 3)

Python比较运算符

运算符 描述
> 判断大于
< 判断小于
== 判断等于
>= 判断大于等于
<= 判断小于等于
!= 判断不等于
=== 判断全等

Python赋值运算符

运算符 描述 实例
= 简单的赋值运算符 a=b将b的值赋给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

Python的位运算符

​ 按位运算是把数字看做二进制来计算,常见的位运算符如下:

运算符 描述
& 按位与,全为1才为1
| 按位或,有一个为1就为1
^ 按位亦或
~ 按位取反,~a其值为-x-1
<< 左移运算符
>> 右移运算符

a=15 —>0000 1111
b=30 —>0001 1110
a&b—>0000 1110=14
a|b—>0001 1111=31
a^b—>0001 0001=17
a>>2—>0000 0011=3

Python的成员运算符

​ 测试是否包含某个成员,一般测试字符串,列表,元组

运算符 描述
in 如果在指定的序列返回Yure,否则返回False
not in 如果在指定的序列中没有找到返回值返回True,否则返回False

demo:

>>> s='qwer'
>>> 'q' in  s
True
>>> 'e' not in s
False
>>> p=list(s)
>>> p
['q', 'w', 'e', 'r']
>>> 'p' in p
False

Python的身份运算符

运算符 描述
is is时判断两个标识符是不是应用自一个对象
is not is not 是判断 两个标识符是不是应用自不同对象

demo:

>>> a='zx'
>>> b='xc'
>>> a is b #类似判断id(a)==id(b)
False
>>> b='zx'
>>> a is b
True
>>> id(a)
41944488
>>> id(b)
41944488
>>> b='xc'
>>> id(b)
41938992

Python中的逻辑运算符

  • and 同时为真 返回第二个值
  • or
  • not

2.9数据类型的强制转换

强转类型 描述
int(x,[base]) 将x强制转换为整型,如果x为字符串就需要指定基数
float(x,) 将x强制转换为浮点型
complex(x) 将x强制转换为复数型
str(x) 将x强制转换为字符串型
repe(x) 将x强制转换为表达式字符串型
list(x) 将x强制转换为列表型
tuple(x) 将x强制转换为元组型
dict(x) 将x强制转换为字典型
set(x) 将x强制转换为集合型
chr(x) 将整数转换为字符 chr(65)—>‘A’
ord(x) 将字符转换为数值
bin(x) 转换为2进制
oct(x) 转换为8进制
hex(x) 转换为16进制
>>> a='123'
>>> int(a)
123
>>> int(a,8) #判定123为八进制数进行十进制转换
83
>>> int(a,16)#判定16为八进制数进行十进制转换
291
>>>

2.10随机函数

导入模块

import random

random的常见功能

  • random.random():用来生成一个[0,1)的随机浮点数

    import random
    for i in range(100):
      a=random.random()
      print(a,end='')
    
    
  • random.uniform(a,b):用来生成指定范围内的随机浮点数

    import random
    for i in range(100):
      a=random.uniform(1,2)
      print(a,end='')
    
  • random.randint(a,b):生成[a,b]之间的整数

    import random
    for i in range(100):
      a=random.randint(1,2)
      print(a,end='')
    
  • random.randrange([start],stop,[step]):从指定范围内按指定基数递增或递减的集合中随机取出一个值

import random
for i in range(100):
  a=random.randrange(1,6,0.2)
  print(a,end='')

  • random.choice(sequence):从序列中随机获取一个元素,字典,元组,字符串皆可

    import random
    x=range(1,21,1)
    for i in range(100):
      a=random.choice(x)
      print(a,end='')
    
  • random.shuffle(x,[random]):用来将一个列表中的元素打乱(重新排列)

    import random
    li=['a','b','c','d']
    for i in range(100):
      a=random.shuffl(li)
      print(li,end='')
    
    
  • random.sample(sequence,k):用来从指定序列中获取指定长度的序列并重新排列,不修改原序列

    import random
    li=['a','b','c','d']
    for i in range(6):
        print(random.sample(li,2))
        
    

版权声明:本文为Last_G原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。