python基础-Unit 1.认识python和基础知识

来源:互联网 发布:朝鲜扫码软件 编辑:程序博客网 时间:2024/06/07 14:48

1.认识python

A.起源

Python的作者,Guido von Rossum,荷兰人。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。 Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。 但这些语法规定让Python容易读。另一方面,Python聪明的选择服从一些惯例,特别是C语言的惯例,比如回归等号赋 值。Guido认为,如果“常识”上确立的东西,没有必要过度纠结。 Python从一开始就特别在意可拓展性。Python可以在多个层次上拓展。从高层上,你可以直接引入. py文件。在底层,你可以引用C语言的库。Python程序员可以快速的使用Python写. py文件作为拓展模块。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.so文件引入到Python中使用。Python就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更改。

人生苦短,我用python

B. 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嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
  • 丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
  • 概括————Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。
  • 规范的代码————Python采用强制缩进的方式使得代码具有极佳的可读性。

缺点

  • 运行速度,有速度要求的话,用C++改写关键部分吧。
  • 国内市场较小(国内以python来做主要开发的,目前只有一些web2.0公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
  • 中文资料匮乏(好的python中文资料屈指可数)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。
  • 构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。

C.应用场景

  • Python经常被用于Web开发。
  • NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序。
  • PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。
  • Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网 络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。

2.第一个python程序

A.编写并运行python程序的方法

  1. 命令行

输入python3 ,输入python3表示用的python这门编程语言的第3个版本,如果只输入python的话表示用的是python的第2个版本

输入以下代码,直接回车运行

print('hello world')
  1. 编辑器编写代码

新建文件,world.py,后缀为“.py”,在文件中输入以下代码,保存

print('hello world')

运行程序,在控制台输入python3 world.py

运行结果:

hello world

3.注释

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

A.单行注释

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

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

B.多行注释

'''我是多行注释,可以写很多很多行的功能说明这就是我牛X指出'''

C.中文注释

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

print('你好')

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

File "world.py", line 1SyntaxError: Non-UTF-8 code starting with '\xc4' in file world.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

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

#coding=utf-8

修改之后的程序:

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

运行结果:

你好

注意:

在python语法规范中推荐使用的中文注释的方式是:

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

4.变量以及类型

A.变量的定义

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

num1 = 100 #num1就是一个变量num2 = 87  #num2也是一个变量result = num1 + num2 #把num1和num2这两个变量中的数据进行累加,然后放到result变量中

B.变量的类型

Python 定义了一些标准类型,用于存储各种类型的数据。

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

Python支持四种不同的数字类型:

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)

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

  • 在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别
  • 可以使用type(变量的名字),来查看变量的类型

5.标示符和关键字

标示符是开发人员在程序中自定义的一些符号和名称,如变量名 、函数名等

A.标示符的规则

  • 标示符由字母、下划线和数字组成,且数字不能开头
  • python中的标识符是区分大小写的

B.命名规则

  • 见名知意

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

  • 驼峰命名法

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

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

    不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf

C.关键字

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

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

  • 查看关键字

    >>> 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', 'return', 'try', 'while', 'with', 'yield']

6.输出

A.普通的输出

python中变量的输出

# 打印提示print('hello world')print('给我的卡---印度语,你好的意思')

B. 格式化输出

  1. 格式化操作的目的

比如有以下代码:

pirnt("我今年10岁")pirnt("我今年11岁")pirnt("我今年12岁")...
  • 想一想:

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

  • 答:

    字符串格式化

    1. 什么是格式化

看如下代码:

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

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

age = 18name = "xiaohua"print("我的姓名是%s,年龄是%d"%(name,age))
  1. 常用的格式符号

下面是完整的,它可以与%符号使用列表:

格式符号 转换 %c 字符 %s 通过str() 字符串转换来格式化 %i 有符号十进制整数 %d 有符号十进制整数 %u 无符号十进制整数 %o 八进制整数 %x 十六进制整数(小写字母) %X 十六进制整数(大写字母) %e 索引符号(小写’e’) %E 索引符号(大写“E”) %f 浮点实数 %g %f和%e 的简写 %G %f和%E的简写

C. 换行输出

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

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

7.输入

A. python2版本

(1).raw_input()

在Python中,获取键盘输入的数据的方法是采用 raw_input 函数

看如下示例:

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

运行结果:

请输入密码:123456您刚刚输入的密码是: 123456

注意:

  • raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
  • raw_input()在从键盘获取了数据以后,会存放到等号右边的变量中
  • raw_input()会把用户输入的任何值都作为字符串来对待

(2).input()

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

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

>>> a = input() 123>>> a123>>> type(a)<type 'int'>>>> a = input()abcTraceback (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>>> a4>>> a = input()"abc"+"def">>> a'abcdef'>>> value = 100>>> a = input()value>>> a100

B. python3版本中

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

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

8.运算符

python支持以下几种运算符

  • 算术运算符

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

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

- 赋值运算符

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

- 复合赋值运算符

运算符 描述 实例 += 加法赋值运算符 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
  • 逻辑运算符(后面讲解)
  • 位运算符(后面讲解)
  • 成员操作符(后面讲解)
  • 标识操作符(后面讲解)
  • 比较(即关系)运算符(后面讲解)

9.常用的数据类型转换

函数 说明 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)
原创粉丝点击