Python语法基础

Python语法基础

(1) 语句块缩进

· python代码块通过缩进对其表达代码逻辑而不是使用大括号

· 缩进表达一个语句属于哪个代码块

· 缩进风格

​ - 1或2:可能不够,很难确定代码语句属于哪个块

​ - 8至10:可能太多,如果代码内嵌的层次太多,就会使得代码很难阅读

​ - 4个空格:非常流行,范·罗萨姆支持的风格

· 缩进相同的一组语句构成一个代码块,称之为代码组

· 首行以关键字开始,以冒号:结束,该行之后的一行或多行代码构成代码组

· 如果代码组只有一行,可以将其直接写在冒号后面,但是这样的写法可读性差,不推荐

(2) 注释及续行

· 首要说明的是:尽管Python是可读性最好的语言之一,这并不意味着程序员在代码中就可以不写注释

· 和很多UNIX脚本类似,python注释语句从#字符开始

· 注释可以在一行的任何地方开始,解释器会忽略掉该行#之后的所有内容

· 一行过长的语句可以使用反斜杠\分解成几行

(3) 同行多个语句

· 分号; 允许你将多个语句写在同一行上

· 但是这些语句不能在这行开始一个新的代码块

· 因为可读会变差,所以不推荐使用

(4) 输出语句

· 获取帮助

>>> help(print)

· 使用方式

>>> print('Hello World!')
Hello World!
>>> print('Hello' + 'World!')
HelloWorld!
>>> print('Hello', 'World!')
Hello World!
>>> print('Hello', 'World!',sep='***')
Hello***World!
>>> print('Hello', 'World!',sep='***',end='123')
Hello***World!123

(5) 输入语句

· 获得帮助

>>> help(input)

· 使用方式( 注意,input的返回值一定是字符类型 )

>>> num = input("Number:")
Number: 20
>>> num + 10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'number' is not defined

3.数据类型概述

(1) 数字

· 基本数字类型

类型 描述
int 有符号整数
bool 布尔值(True为1,False为0)
float 浮点数
complex 复数

· 数字表示方式

  • python默认以十进制数显示
  • 数字以0o或0O开头表示为8进制数
  • 数字以0x或0X开头表示16进制数
  • 数字以0b或0B开头表示2进制数
[root@myproxy ~]# cp /etc/hosts /tmp
[root@myproxy ~]# ll /tmp/hosts
-rw-r--r-- 1 root root 251 Sep 15 22:00 /tmp/hosts
>>> import os
>>> os.chmod('/tmp/hosts',600)
[root@myproxy ~]# ll /tmp/hosts 
---x-wx--T 1 root root 251 Sep 15 22:00 /tmp/hosts
>>> os.chmod('/tmp/hosts', 0o600)
[root@myproxy ~]# ll /tmp/hosts 
-rw------- 1 root root 251 Sep 15 22:00 /tmp/hosts
# Linux文件权限是8进制

(2) 序列对象

· 字符串

· 定义字符串

  • python中字符串被定义为引号之间的字符集合

  • python支持使用成对的单引号和双引号

  • 无论单引号还是双引号,表示的意义是相同的

  • python还支持三引号(三个连续的单引号或者双引号),可以用来包含特殊字符

  • python不区分字符和字符串

  • # 多类型变量输出时使用占位符
    name = 'tom'
    age = 20
    "%s is %s years old." % ( name, age)
    # 三引号的使用可以保留用户的输入格式
    >>> words = "hello\nwelcome\ngreet"
    >>> print(words)
    hello
    welcome
    greet
    ### 上面的可读性太差,使用三引号等价表达 ###
    >>> wds = '''hello
    ... welcome
    ... greet'''
    >>> print(wds)
    hello
    welcome
    greet
    >>> wds
    'hello\nwelcome\ngreet'
    

· 字符串切片

· 使用索引运算符[]和切片运算符[ : ]可得到子字符串

· 第一个字符的索引是0,最后一个字符的索引是-1

· 子字符串包含切片汇总的起始下标,但不包含结束下标

>>> py_str = 'python'
>>> len(py_str)
6
>>> py_str[0]
'p'
# 负数表示从右往左取值
>>> py_str[-2]
'o'
>>> py_str[2:4]
'th'
>>> py_str[2:]
'thon'
>>> py_str[:4]
'pyth'
# 步长为2
>>> py_str[::2]
'pto'
>>> py_str[1::2]
'yhn'

· 字符串连接操作

· 使用+号可以将多个字符串拼接在一起

· 使用*号可以将一个字符串重复多次

>>> is_cool =  'is Cool'
>>> print(py_str + '' + is_cool)
pythonis Cool
>>> py_str * 2
'pythonpython'

· 列表和元组

· 定义列表

· 可以将列表当成普通的"数组",它能保存任意数量的任意类型的python对象

· 像字符串一样,列表也支持下标和切片操作

· 列表中的项目可以改变

>>> alist = [1, "tom", "alice"]
>>> alist[1] = 'bob'
>>> alist
[1, 'bob', 'alice']

· 列表操作

· 使用in或not in判断成员关系

· 使用append方法向列表中追加元素

>>> len(alist)
3
>>> alist + [100]
[1, 'bob', 'alice', 100]

· 元组的定义及操作

· 可以认为元组是"静态的列表"

· 元组一旦定义,不能改变

>>> atuple = (10, 20, 30, 'tom', 'jerry', 100)
>>> atuple[1]
20
>>> atuple[-1]
100
>>> atuple[2:4]
(30, 'tom')
>>> len(atuple)
6
>>> atuple[-1] = 10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
# 报错,元组中元素不能改变

(3) 字典

· 字典的定义及操作

· 字典是由无序的键值对(key-value)构成的映射数据类型

· 通过键来取值,不支持下标操作

>>> adict = {'name': 'bob', 'age': 20}
>>> 'bob' in adict
False
>>> 'name' in adict
True
>>> adict['name']
'bob'
>>> adict
{'age': 20, 'name': 'bob'}

· 数据类型比较(重点)

· 按存储模型分类:

  • 标量:数字、字符串
  • 容器:列表、元组、字典

· 按更新模型分为

  • 不可变:数字、字符串、元组
  • 可变:列表、字典
>>> s1 = 'python'
>>> alist = [1, 2, 3]
>>> s1[0]
'p'
>>> alist[0]
1
>>> alist[0] = 10
>>> s1[0] = 'P'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
# 因为字符串不可变,所以报错,需要整体修改
>>> s1 = 'Python'

· 按访问模型分

  • 直接:数字
  • 顺序:字符串、列表、元组
  • 映射:字典
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容