python三-----基础语法

注意:(1)函数可以传任意类型的参数,但是一旦要保证合法操作

一、语句和变量

1、语句折行

(1)\让用户知道解析的是那行代码没有写完,在下行继续读。换行

(2)任何用(),[],{}括起来的代码,都是一个代码块

2、对于字符串来说,三引号''' '''可以换行,单引号和双引号不能换行

3、使用 ; 可以把多个语句写到同一行. 但是强烈不建议这么做。

二、缩进规范:

1、Python中使用缩进表示语句块

2、同一个语句块中的代码必须保证严格的左对齐(4个空格为一组)(左边有同样数目的空格和制表符)。不要使用制表符进行缩进,不同的平台制表符代表的大小不同,可能会产生差异

三、赋值

1、多重赋值

2、多元赋值:多个变量赋不同的值

交换两个元素的值

3、作用域和生命周期

(1)Python中, def, class, lamda(我们后⾯面会讲) 会改变量的作用域

(2)if, else, elif, while, for, try/catch 不会改变量的作用域

a、说明了函数内部声明的变量在类外不能访问

 b、说明了函数外部声明的变量在类内可以访问

(3)内建函数globals()返回了全局作用域下都有哪些变量, 内建函数locals()返回了局部作用域下都有哪些变量

关于Python的变量的生命周期, 这个不需要程序猿操心, Python提供了垃圾回收机制自动识别一个变量的生命周期是否走到尽头, 并自动释放空间

(4)return关键字函数返回几个值,就要用几个返回值去接收:可以使用变量或者占位符使数量相同,把返回值依次取出来

改进:


4、特殊标识符

(1)Python使用下划线(_)作为变量的前缀和后缀, 来表示特殊的标识符。私有化之后,不能被别的文件访问。我们也可以强行访问。

(2)_xxx表示一个 "私有变量", 使用 from module import * 无法导入。

(3)前后都有_的变量一般是系统定义的名字。我们自己在给变量命名时要避免这种风格,防止和系统变量冲突。

5、文档字符串

(1)单行注释:#

(2)多行注释:使用三引号('''/''')在函数/类开始位置表示。这个东西也被称为文档字符串。这种注释的方式应该写在函数的第一行,如果不是第一行就会出现错误。

a、打印函数的说明属性:

b、用内建函数进入帮助模式(此种方式打印出了函数的函数名,作用域,结束标志)

c、如果不在第一行写注释,则不能正确显示

(3)函数的注释:在函数的开头声明了函数的功能和接收的含义,以及返回的值。

6、模块文档:不光一个函数/类可以有一个文档字符串,一个模块也同样可以

四、对象和类型

1、一个完整的python对象,必须包含以下几个方面:

a、身份: 每一个对象都有一个唯一的身份标识自己. 实⽤用内建函数id可以看到这个标识的具体的值。

类型: 对象的类型决定了对象保存什么样的值, 可以进行什么样的操作, 以及遵守什么样的规则. 实用内建函数type可以查看对象的类型. 本质上就是把对象分类。

值: 表示对象中具体保存的内容. 有些对象的值可以修改, 有些对象的值不能修改, 这个称为对象的 "可变性"。

元组和字符串初始化之后都不能改变它的值

Python中任何类型的值其实都是一个对象(判定一个东西是不是对象, 就尝试用id取一下看能否取到)。100 这样的字面值常量, 也是对象; 一个字符串, 也是对象; 一个函数, 也是对象; 一个类型(type函数的返回值), 其实也是对象; 一个模块, 还是对象;

python中自动接收与回收声名周期的变量(引用计数原则)

2、Python有⼀一个特殊的类型, 称为NoneType. 这个类型只有⼀一个对象, 叫做None

(1)NoneType类似于C语言中的void 

(2)None类似于C语言的空指针NULL 

(3)None这个对象没啥有用的属性, 它的布尔值为False

布尔值为NULL的:

None 

False 

所有值为0的数字(0, 0.0, 0.0 + 0.0j) 

"" (空字符串串)

() (空元组) 

{} (空字典)

其他情况下, 这些内建对象的布尔值就是True。

3、对象值得比较

(1)所有内建类型对象都可以进行比较操作来进行值比较 (在python2中不同得类型也可以进行比较,在python3中只有相同得类型才可以进行比较)

以下是在python2中得出得结论:

(2)比较运算的结果是True或者False

(3)比较运算符包括 ==, !=, <, >, <=, >=

4、对象身份得比较

(1)可以使用id这个内建函数来比较,如果id得值相同,说明指向同一个对象‘

(2)可以通过is关键字,字节进行判定

(3)提供了is not可以直接判定两个变量名是否指向不同得对象

5、对象类型得比较

(1)两个对象比较类型是否相同,可以使用内建函数type

(2)使用isinstance

6、类型工厂函数

(1)不能把list强制类型转化为dict

(2)元组可以构建成字典

(3)可变对象必须是键值对,才能转化为字典

(4)list里面也是list

总结:list的强制类型转换,需要关注:a、引入的对象必须是可变的对象;b、迭代的每一个元素里面只有两个值,组成键值对,一旦不能正常转换为键值对,就会报错

7、python不支持得类型:

a、char, byte: 可以使用长度为1的字符串, 或者整数代替; 

b、指针: Python替你管理内存, 虽然id()返回的值接近于指针的地址, 但是并不能主动去修改; 

c、int/short/long: 以前版本的Python中也是区分int和long的, 但是后来统一在一起了; 

d、记住Python中的整数表示的范围,只取决于你机器器内存的大小. 

e、float/double: Python的float其实就是C语言的double. Python设计者认为没必要支持两种浮点数。

五、数字和运算:

1、常用内置函数/模块

(1)abs:求绝对值函数:接收一个数,返回一个数得绝对值(不能是字符串,只能是数字)

(2)divmod(商取余):两个参数:被除数和除数,返回值是商和余数组成得元组

或者采用两个变量将这两个数接受起来

(3)round(x,y)接收两个参数:第一个参数是要处理的浮点数,第二个参数是保留多少个小数

存在数学库:

但是,pi值最为一个常量保存在库中,存在一个精度范围,pi在库中保存了11位,不是一个无限不循环小数:

(4)str强制类型转换:

(5)sorted 四个参数 第一个参数为可迭代对象(单一对象不用进行排序);第二个参数是cmp代表了排序方法(是一个函数,接收两个参数,返回一个值);第三个参数key:也是一个排序方法(是一个函数,接收一个参数,返回一个值,根据这个值进行排序);第四个参数:reverse布尔值,默认为False,是增序。后面三个参数可以不传实参,使用默认值。【核心参数是可迭代对象】

使用默认值,排序顺序是从大到小

b、指定排序顺序

c、指定第二个参数

d、key关键字:

六、条件和循环

1、同级结构保持左对齐,就能搭配在一起。if的嵌套if语句,只要保持左对齐,就能对应相应那一层的if语句

2、条件表达式

3、和循环搭配的else(else不仅可以和if搭伙,还能和while、for搭伙)

A、和for循环搭配

此函数遍历结束之后一定会走else,如果没有完整的遍历一遍for循环,则不执行

B、和while循环搭配

在while循环中,如果在中途被打断,也不能正确的输出

4、关键字赋值:可以把值赋值给指定的参数

函数,未给定一个值的时候,默认使用默认值

a、传默认值

b、赋值可以赋值给指定的参数

python不支持函数重载。函数的参数不止可以是整数、浮点数、小数,还可以是一切指定的对象[],(),{},甚至可以是函数

函数既可以作为函数的参数,也可以作为函数的返回值

有的参数有默认值,有的参数没有默认值的时候,有默认值的参数应放在后面、没有默认值的参数写在前面

七、参数组(可变长参数组

可变长参数组:通过将参数名前加一个*号,*之后的内容表示是一个元组

条件:join函数做字符串拼接,接受可迭代对象,然后把字符串元素拼接起来

(1)可遍历,也叫可迭代对象

拼接字符串不能是非字符串,必须是可以拼接的对象

(2)对象元素支持字符串化操作

前面加两个*,表示字典(**代表把不定数额的参数转化成dict字典)

(3)使用 \t 分割的行文本, 可以很方便的和linux上的一些文本处理工具搭配使用。 比如cut, sort, awk等. 通过在参数名前加两个星号 **, 星号后面的部分表示传入的参数是一个字典.。一个*代表会把传进去的参数组装成一个元组tuple。这时候调用函数就可以按照关键字参数的方式传参了。
有几个键值对写几个键值对,每个键值对之间用逗号分隔开。 

(4)函数的返回值

a、通过return关键字返回一个对象.

b、如果没有return语句句, 则返回的是None对象.

c、可以同时返回N个对象, 通过 , 分割(本质上是在返回一个元组).

把元组中对应的值取出来

(5)函数的内置属性:函数也是一个对象, 通过内建函数 dir 可以看到一个函数中都有哪些属性。

python自带的核型变量,前后加上两个下划线

函数可以作为函数的参数,函数里面还可以嵌套函数,但是超过了函数的作用域,则会出现错误

猜你喜欢

转载自blog.csdn.net/xuruhua/article/details/80976723