吉吉:
python这么火爆,那么你知道它有哪些长处吗,扬长避短才是选择一门语言的首要依据。
##pyhto语言的主要特点
Python具有良好的跨平台特性。程序无需修改在Windows、Linux、Unix、Mac等操作系统上使用。
Python是一种解释性语言。开发工具首先把Python编写的源代码转换成称为字节码的中间形式。运行时,解释器再把字节码翻译成适合于特定环境的机器语言并运行。这使得Python程序更加易于移植。(脚本语言和编程语言的区别也可以看出来)
胶水语言:具有良好的可扩展性。可以把多种不同语言编写的程序融合到一起实现无缝拼接,更好地发挥不同语言和工具的优势,满足不同应用领域的需求。例如,Python可以调用使用C、C++等语言编写的程序,同样也可以将Python程序嵌入到其他程序设计语言中,或者作为一些软件的二次开发脚本语言。
Python支持面向过程的编程,程序可以是由过程或仅仅是由可重用代码的函数构建起来。同时,Python从设计之初就是一门面向对象的语言,因此也支持面向对象的编程。
比如以公共汽车而言。
“面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。类似的还有修理等等。与面向对象明显的不同就是封装、继承、类。
个人觉得了解那些使用python的企业是十分重要的,会给了我们pythoner带来对未来的一些方向感。
##目前使用Python的企业
个人觉得第一点才是python的硬伤,哈哈。
##Python文件名
大家可能最熟悉的是py格式的文件,其实不仅仅只用这一种python格式的文件
首先从python对象开始简单叙述一下
123#输出:123
id(123)#输出:505912816
type(123)#输出:
print(123)#输出:123
#使用”hello world”字符串字面常量创建字符串对象,并打印出来。
>>>print("hello world!")
hello world!
>>>id("hello world!")
2160946345968
#使用变量打印”hello world”字符串。
>>>message="hello world!"
>>>print(message)
hello world!
>>>x=3
#创建了整型变量x,并赋值为3,再例如语句
>>>x='Hello world.'
#创建了字符串变量x,并赋值为'Hello world.'。
>>> x = 3 #创建整型变量
>>> print(x**2)
9
>>> x =x+ 6 #修改变量值
>>> print(x)#读取变量值并输出显示9
在python中变量总是一个指向对象的指针,给一个变量赋新的值,并不是改变对象的值,只是改变对对象的引用。
>>> x = 3
>>> id(x)
10417624
>>> y = 3
>>> id(y)
10417624
>>> x = [1, 1, 1, 1]
>>> id(x[0]) == id(x[1])
True
>>> x = 3
>>> print(type(x))
>>> x = 'Hello world.'
>>> print(type(x)) #查看变量类型
>>> x = [1,2,3]
>>> print(type(x))
>>> isinstance(3, int) #测试对象是否是某个类型的实例
True
>>> isinstance('Hello world', str)
True
>>>x=1#变量x指向对象1
>>>del x#删除变量x
>>>x#变量x没有声明和定义(NameError)
赋值是创建变量的一种方法。赋值的目的是将值与对应的名字进行关联或改变变量的值。
>>>myVar = "Hello World!"
>>> myVar = 3.1416
>>>myVar=3+3*5
>>> print (myVar)
18
>>>myVar=myVar+1
>>> print (myVar)
19
>>>myFloat #未定义
变量1=变量2=表达式
等价于:
变量2=表达式
变量1=变量2
>>>x=y=123 #变量x和y均指向对象123
>>>x #输出123
>>>y #输出123
复合赋值运算符:+=、-=、*=、/=、//=、**=等。
例如:
x += 3
x = x + 3
#在语法上等价
>>> x,y = 1,2
>>> x
1
>>> y
2
>>>x,y=y,x #使用序列解包赋值实现变量交换
>>>x
2
>>>y
1
在内存中存储和处理数据与现实世界不同,是区分数据类型的,不同的数据类型占用不同的字节数,并有着不同的编码和运算机制。
###整型数据int
>>> 0o137#八进制
95
>>> 0b111#二进制
7
>>> 0xff #十六进制
255
>>> type(28346283742874)
>>> a=99999999999999999999
>>> a*a
9999999999999999999800000000000000000001
>>> a**3
999999999999999999970000000000000000000299999999999999999999
>>> type(12)
>>> type(12.0)
>>> 8.9e-4
0.00089
>>> type(1.2e1)
>>> print(23/1.05)
21.904761904761905
>>> type(True)
>>> x,y=10,20
>>> x>y
False
>>> x+10<=y
True
>>> aComplex=4.23+8.5j
>>> aComplex
(4.2300000000000004+8.5j)
>>> aComplex.real 4.2300000000000004
>>> aComplex.imag
8.5
>>> aComplex.conjugate()
#返回复数的共轭复数
(4.2300000000000004-8.5j)
数值数据可参与的运算包括算术运算、关系运算、逻辑运算、位运算。
###算术运算
>>> x=8
>>> y=3
>>> x/y
2.6666666666666665
>>> x//y
2
浮点数的除法和整除示例如下
>>> x=3.8
>>> y=0.7
>>> x/y
5.428571428571429
>>> x//y
5.0
%为求余数的运算,可以通过求余运算来判断一个数是否能被另一个数整除。
>>> x=834
>>> x%2==0
True
还可以对浮点数计算余数。由于浮点数的精确度影响,计算结果可能略有误差。
>>> 3.1%2
1.1
>>> 6.3%2.1
2.0999999999999996
>>> 6%2
0
>>> 6.0%2
0.0
**运算符表示幂乘
>>> 3 ** 2#3的2次方,等价于pow(3, 2)
9
>>> 9 ** 0.5 #9的0.5次方,平方根
3.0
>>> 20==20
True
>>> 20=20
SyntaxError: can't assign to literal
>>> x,y=10,20
>>> x==y
False
>>> x=y
>>> x
20
>>> a,b,c=10,20,30
>>> a<=b<=c
True
>>> x=3.141592627
>>> x-3.14
0.0015926269999999576
>>> 2.1-2.0
0.10000000000000009
从这个例子可以得到一条经验:不能用==来判断是否相等,而是要检查两个浮点数的差值是否足够小,是则认为是相等的。
>>> 2.1-2.0==0.1
False
>>> esp=0.000000001
>>> abs((2.1-2.0)-0.1)
判断闰年的依据满足下面两个条件之一:
该年能被4整除但不能被100整数
该年能被400整除
>>> y=2010
>>> (y%4==0 and y%100!=0) or(y%400==0)
False
>>> y=2012
>>> (y%4==0 and y%100!=0) or(y%400==0)
True
>>> y=2000
>>> (y%4==0 and y%100!=0) or(y%400==0)
True
函数式编程语言还提供惰性求值(Lazy evaluation,也称作call-by-need),是在将表达式赋值给变量(或称作绑定)时并不计算表达式的值,而在变量第一次被使用时才进行计算。(重点)
>>> 3 << 2 #把3左移2位 即011变为01100
12
>>> 3 & 7#位与运算
3
>>> 3 | 8 #位或运算
11
>>> 3 ^ 5#位异或运算
6
表达式可以很简单,也可能很复杂,其中包含了多个不同类型的运算符,那不同类型的运算符按照什么顺序运算呢?
计算机表达式中的数据区分不同的类型,同类型数据运算得到同类型的数据,那不同类型的数据出现在同一表达式中,如何运算?
>>> 6/4*4 #6/4得到1.5
6.0
>>> 6//4*4 #6//4得到1
4
两种类型转换方式:
自动转换
强制转换
系统自动完成的,不需要在程序中写出。
自动转换的基本原则:
将表示数值范围小的数据类型的值转换到表示数值范围大的数据类型的值,这样能避免由于类型转换造成的误差损失。
>>> 3.0+2
5.0
>>> type(3.0+2)
在程序语句中明确类型转换的描述,要求执行类型转换。
python语言提供各种类型的转换函数
>>> x,y=23,12
>>> y=float(y)+0.5
>>> y
12.5
>>> complex(x,y)
(23+12.5j)
>>> hex(x)#将一个整数转换为一个十六进制字符串
'0x17'
>>> oct(x)#将一个整数转换为一个八进制字符串
'0o27'
>>> repr(x) #将对象 x 转换为字符串(以解释器的方式)
‘23'
>>> chr(13)#返回Unicode编码为x的字符
'\r'
>>> ord('\n')#将一个字符转换为它的整数值(Unicode码)
10
>>> str(x)#将对象 x 转换为字符串(以人类理解的方式)
'23'
>>> eval('23-12')#将字符串str当成有效表达式来求值,并返回计算结果
11
>>> eval('x-y')
11
>>> dir(__builtins__)
pow(x, y,[, z])
返回x的y次方,等价于x ** y或(x ** y) % z,其中z是可选参数。
>>>Power(2,4)
16
>>>power(2,4,3)
1
round(x,n)
按“四舍五入”法对x保留n位小数
>>> round(78.3456,2)
78.35
divmod(x, y)
返回包含整商和余数的元组:((x-x%y)/y, x%y)
>>> divmod(10,3)
(3, 1)
参考: