python学习 day1
1、python语言划分:
编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言
编译型与解释型
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
2、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编码
python2默认的编码是ASCII,python3默认的编码是utf-8
1 python2
2
3 #!/usr/bin/python
4 # -*- coding: UTF-8 -*-
5
6 print "你好,世界" #如何不强制指定字符集是会出现乱码
7
8
9 python3
10 #!/usr/bin/python
11
12 print ("你好,世界") #不指定默认也可以输出中文
asiic:8位 == 1个字节 ,表示一个字符
万国码:unicode 把所有国家的语言包含进去
unicode升级:
utf-8:最少用8位表示一个字节
单位的转化:
8bit 1bytes
1024bytes == 1kb
1024kb == 1mb
1024mb == 1Gb
1024Gb == 1Tb
4、变量
把程序运行的中间结果临时的存在内存里,以便后续的代码调用
声明变量
1 #!/usr/bin/env python 2 3 name = "Tom"
上述代码声明了一个变量,变量名为: name,变量name的值为:"Tom"
变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量的定义要具有可描述性。
5、常量
常量就是指不变的量,比如π:3.1415826....;在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量:AGE = 18
6、用户交互
1 #!/usr/bin/env python
2
3 # 将用户输入的内容赋值给 name 变量
4 name = input("请输入用户名:")
5
6 print (name)# 打印输入的内容
python2中有raw_input()和input()两种方式,第一种输出结果类型是str,第二种输出结果是int;python3中只有input()类型,输出结果类型是str
7、格式化输出
1 方法一:
2 name = input('请输入用户名:')
3 age = input('请输入年纪:')
4 job = input('请输入工作:')
5 Hobbie = input('请输入爱好:')
6
7 msg1 = ''' ------------ info of %s -----------
8 Name : %s
9 Age : %d
10 job : %s
11 Hobbie: %s
12 ------------- end -----------------
13 ''' % (name,name,int(age),job,Hobbie)
14 print(msg1)
15
16 方法二:
17 dic = {'name':'leige','age':'20','job':'IT','Hobbie':'wu'}
18 dic = {'name':name,'age':age,'job':job,'Hobbie':Hobbie}
19
20 msg2 = ''' ------------ info of %(name)s -----------
21 Name : %(name)s
22 Age : %(age)s
23 job : %(job)s
24 Hobbie: %(Hobbie)s
25 ------------- end -----------------
26 ''' % dic
27 print(msg2)
28 print('你的年龄%s ,你的名字%s,学习进度5%%'% (age,name)) #如果输出结果中含有%号,需要再使用一个%进行转义
8、if、while简单使用
1 #求1-100以内数字相加的和
2 #方法一:
3 i = 1
4 count = 0
5 while True:
6 if i <= 100:
7 print(i)
8 i += 1
9 else:
10 break
11
12 #方法二:
13 while i <= 100:
14 count += i
15 i += 1
16 print(count)