Python学习之语法学习

每个语言都有自己独特的语法

数据类型

python支持以下几种基本数据类型:整数、浮点数、字符串、布尔、空值;另外还有类似对象的类型list(数组)、tuple(元组)、dict(Map)、set(集合)

基本数据类型

整数和浮点数

>>> a=1
>>> b=1.1

上面,a是整数,b是浮点数,整数与浮点数计算结果为浮点数。

字符串

严格来说,字符串算是一种对象类型,但和java一样字符串是一种不可变对象类型。

和js一样,字符串是使用单引号或双引号括起来的任意文本,字符串之前用“+”号链接可以拼接字符串,如下:

>>> a='我是一个字符串'
>>> b="我也是一个字符串"
>>> c="\n我用了一个换行符号"
>>> a+b+c
'我是一个字符串我也是一个字符串\n我用了一个换行符号'
>>> print(a+b+c)
我是一个字符串我也是一个字符串
我用了一个换行符号

print()用于打印字符串

“…”符号用于代替换行,提高可读性。。。

>>> a='''line1
... line2
... line3'''
>>> a
'line1\nline2\nline3'

ord()和chr()函数

ord函数用来显示一个字符的ascii码,chr函数用来将ascii码转为字符。

>>> ord('e')
101
>>> chr(101)
'e'
>>> ord('ee') #参数只能是一个字符,否则会抛出如下异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found

使用占位符格式化

python的格式化方法c语言几乎一样,我总是记不住,网上抄一个吧

格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
>>> a="我的名字叫%s,我今年%d岁了"
>>> print(a % ('john', 31))
我的名字叫john,我今年31岁了

bytes

bytes算是一种独立的数据类型,但它与字符串类型一般分不开

encode()函数可以将字符串转换为对应字符集的bytes

>>> a='我是一个字符串'
>>> b=b'我是一个字符串'
  File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> b=b'hello world'
>>> print(b)
b'hello world'
>>> a.encode('utf-8')
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'

布尔

True和False,注意大小写

空值

None相当于java的null,注意大小写

数组(list)

python初始一个数组的方式和js很像

>>> array_1=['aa','bb','cc']
>>> array_2=[11,22,33]
>>> array_3=['aa',11,'cc']
>>> empty_array=[]
>>> len(empty_array)
0

len()函数可以获得数组的长度,和java一样,数组的下标也是从0开始的,超过下标范围也会报数组越界

但数组的下标可以是负数,表示从后往前的顺序

>>> array_1[0]
'aa'
>>> array_2[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> array_2[-1]
33
>>> array_2[-2]
22

append()、insert()、pop()

append(element)函数是在数组�末尾追加元素

insert(index, element)是在指定的位置插入元素

pop(index)是删除指定位置的元素,如果不指定index,则删除末尾的元素

>>> array_1
['aa', 'bb', 'cc']
>>> array_1.append('dd')
>>> array_1
['aa', 'bb', 'cc', 'dd']
>>> array_1.insert(2,'ff')
>>> array_1
['aa', 'bb', 'ff', 'cc', 'dd']
>>> array_1.pop()
'dd'
>>> array_1
['aa', 'bb', 'ff', 'cc']
>>> array_1.pop(1)
'bb'
>>> array_1
['aa', 'ff', 'cc']

元组(tuple)

元组一种初始化后就不能修改的数组,初始化时用"("和")"表示

>>> t=(1111,'bbbb',array_1) # 元组的三个元素在初始化时就确定了,但你可以通过修改array_1变量的值来变相地修改元组t的值
>>> print(t)
(1111, 'bbbb', ['aa', 'ff', 'cc'])

字典(dict)

字典类型有些类似与java中的map,是一种key-value的数据结构

>>> dict={"aa":33432, "bb": "I'm a string", "cc":"dddd"} # 初始化一个dict变量
>>> dict["aa"] # 如何访问dict中的值
33432
>>> dict["bb"]
"I'm a string"
>>> dict["dd"] # 如果key不存在,会抛出异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'dd'
>>> "dd" in dict # 判断一个key是否存在
False
>>> "aa" in dict
True
>>> print (dict.get("dd")) # 使用get方法,不取不存在的key,返回None
None
>>> print (dict.get("dd", "I got nothing")) # get函数的第二个参数表示,如果返回None则用第二个参数代替
I got nothing
>>> dict["dd"] = "ddddddd" # 往dict里添加一个值,如果有相同的key,则覆盖原来的值
>>> dict.get("dd")
'ddddddd'
>>> dict
{'dd': 'ddddddd', 'cc': 'dddd', 'aa': 33432, 'bb': "I'm a string"}
>>> dict.pop("dd") # pop方法从dict中删除一个key
'ddddddd'
>>> dict
{'cc': 'dddd', 'aa': 33432, 'bb': "I'm a string"}
>>>

set

set可以认为是一个值不能重复的数组

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s2 = set([1,"33",dict]) # set的值里不能放不可HASH的数据类型
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> s2 = set([1,"33",3.44])
>>> s2
{1, 3.44, '33'}

变量

命名方式,只能使用大小写英、数字和"_"组合,不能以数字开头

另外,python是大小写敏感的语言,因此要注意大小写。

与java不同,python是�动态语言,在声明一个变量时,不需要指定变量的数据类型,这一点和js一样。

控制流语句

条件判断

python做条件判断的关键字是"if"、"elif"、"else"

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

判断条件可以直接是一个变量,只要这个变量是非零数值、非空字符串、非空list等,就判断为True,否则为False

循环

循环有两种写法一种是for...in,一种是while

for主要用于遍历一个数组之类的结构,else部分为可选,在循环执行完成后执行

>>> for ele in array_1:
...     print(ele)
... else
...     print("over!")
aa
ff
cc
over!

while则是只要满足条件,就不断循环,条件不满足时退出

>>> n = 0
>>> sum = 0
>>> while n <= 100:
...     sum=sum+n
...     n=n+1
...
>>> print(sum)
5050

break语句用来终止循环

contine用来路过本次循环中的剩余部分

代码缩进

代码缩进是难以接受的python一个特性,代码块不是用{}括起来,而是通过缩进。。。看上面while的例子,第4、5行必须在前面加上一个Tab,否则不在循环体中执行。如此简洁的设计是为啥??

运算符

四则运算

最简单和常用的,需要记牢

运算符 名称 说明 举例
+ 两个对象相加 3 + 5得到8。'a' + 'b'得到'ab'
- 两个数相减 -5.2得到一个负数。50 - 24得到26
* 两个数相乘或是返回一个被重复若干次的字符串 2 * 3得到6。'la' * 3得到'lalala'
** 返回x的y次幂 3 ** 4得到81(即3 * 3 * 3 * 3)
/ x除以y 4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商的整数部分 4 // 3.0得到1.0
% 取模 返回除法的余数 8%3得到2。-25.5%2.25得到1.5

条件运算符

这也都是程序中常用的

运算符 名称 说明
<、<= 小于、小于等于 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
>、>= 大于、大于 等于 返回x是否大于y
== 等于 比较对象是否相等
!= 不等于 比较两个对象是否不相等
not、and、or 布尔“非”、 “与”、 “或” 如果x为True,not x返回False、如果y为False,x and y返回False,x or y 返回 True

位运算

这种不会就算了,会就要精通,否则等于不会

运算符 名称 说明 举例
<< 左移 把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1) 2 << 2得到8——2按比特表示为10
>> 右移 把一个数的比特向右移一定数目 11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5
& 按位与 数的按位与 5 & 3得到1
竖线 按位或 数的按位或 5 竖线 3得到7
^ 按位异或 数的按位异或 5 ^ 3得到6
~ 按位翻转 x的按位翻转是-(x+1) ~5得到6

函数

定义函数

python 定义一个函数的语法如下

>>> def 函数名称 (参数列表...) :
>>>     代码块

参数

函数的参数列表可以有多个,在定义时可以给参数添加默认值

>>> def func( a, b=100, c='str' ) :
...     print ( "a=[%s], b=[%d], c=%s" % (a, b, c) )
...     return None # return None相当于没有return,也可以return其它类型

调用函数时,可以不传参数,也可以指定参数

>>> func( "hello" ) # 只传参数a,b、c用者是默认值
a=[hello], b=[100], c=str
>>> func() # 什么参数都没传,a不能为空
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func() missing 1 required positional argument: 'a'
>>> func( "hello", c="world" ) # 指定了参数c,这时就无所谓参数列表的顺序了
a=[hello], b=[100], c=world
>>> func( "hello", c="world", b=25 ) # 这个例子也用来说明,指定参数列表调用方式
a=[hello], b=[25], c=world
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,610评论 1 118
  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,771评论 0 1
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,730评论 0 5
  • 进入公司即将4个月,零零总总小项目跟了几个,跟进了一个产品从出生到现在上小学的历程,经验不多,但很想把自己当下的感...
    Miss丶企鹅阅读 167评论 0 1
  • 正式上学前一天老师要每人准备一分钟的自我介绍。等到要介绍时我却发现大家都是很短且比较随意 ,而我的准备的相比...
    事就是A阅读 261评论 0 0