欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

# Python第一节课

程序员文章站 2024-02-10 09:06:46
...

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,取值范围2312311-2^{31} - 2^{31}-1

    • 64bit,取值范围2632631-2^{63} -2^{63}-1

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

  • 浮点型(float)

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

    • ture
    • false
  • 复数型(complex)

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

2.7常见数学函数

函数名 描述
abs(x) 绝对值
pow(x,y) xyx^y
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的平方根
maxx,y,z)max(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))
        
    
相关标签: Python学习第一天