-------------------------------------------------------------------------------

常量和Pylint的规范

1.常量:常量的值不能改变。Python里没有常量的概念,因为Python没有机制去改变常量的值,所以Python里不存在常量,但是有常量的定义。常量全部用大写命名。

2.Pylin定义常量的规则:如果定义的变量不属于函数或者类,都认为是常量。应该用函数将零散的变量都封装起来,直接将变量放在模块里是不好的编码习惯。

3. 模块:一个文件就是一个模块。一个Python项目由多个模块组成。Python建议每一个模块都有一个详细的说明。

4.语法标识符(冒号)前不要加空格。

5.程序末尾要额外空出一行。

6.逻辑运算符左右两边要空一格。

7.缩进是4个空格,并不是所有IDE一个tab等于四个空格。

-------------------------------------------------------------------------------

Snippet 嵌入分支 代码块的概念

snippet(片段)功能:帮助快速构建代码片段

例如,在编码区输入if时,在自动出现的下拉菜单里选if/else,IDE会填上模板

if code:

pass

else:

pass

然后只需把code和pass替换为具体函数或变量即可。

1. tab键可自动从code依次切换到每个pass进行输入,反向操作(回到上一个pass)快捷键是shift+tab

2. pass叫空语句/占位语句,这样代码不会报错,以后可以填上。

3.同一个代码块的一个代码执行,其他代码也会执行,因为是同级代码

不推荐代码嵌套太多级别,会影响阅读感。可以使用函数代替。

-------------------------------------------------------------------------------

Elif的用法

elif expression:

Pass

即这个的简化减少了嵌套写法的出现

a = input()所得到的一个string类型的,这是动态语言的一个缺点,没有报错的地方,故进行强转

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

While循环和使用场景

更适合使用在递归的场景

For循环

1.for主要用来遍历/循环  序列或者集合、字典.

2.横向打印在print(y,end='') 单引号里面可以是各种字符 进行间隔

3.for else循环中for遍历完之后再执行else

4.跳出循环:break    如果用break强制跳出(打断)不会执行else中的语句

a = [1,2,3]

for x in a:

if x == 2:

break

print(x)

5.跳过循环: continue    会执行else中的语句

a = [1,2,3]

for x in a:

if x == 2:

continue

print(x)

for循环跳出的常见的错误

两个for的嵌套,内部的y=orange后第一个子列表跳出,但是第二个元组还在进行遍历,所以输出里有着元组里的元素

Break跳出的是内部循环但是外部循环未跳出

如何在PY中实现for (i=0; i<=10; i++){

}这样的语句

Range(start, start, step)

For x in range(0,10):

Print(x)

For x in range(0, 10, 2): //每一个步长是2,相当于间隔为2

Print(x)

递减数列 这个输出是10|8|6|4|2|0

For x in range(0, 10, -2): //表示从0开始一共有十个数字,每一个步长是2,相当于间隔为2

Print(x, end = ‘|’)

a=[1,2,3,4,5,6,7,8,]

for i in range(0,len(a),2):

print(a[i],end='|')

输出 1|3|5|7

序列的切片来实现:

b = a[0:len(a):2]

print(b)

输出【1,3,5,7】

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

Python的组织结构

import 模块名 as 名称 此语法可以解决命名空间过长问题。

如:import t.c7 as m print(m.a)

Import导入的是整个模块,from import 是导入的单个变量

(1)导入变量 from moudle  import  a,def

调用a 的不需要命名空间(moduel.a)

(2) *表示成批次导入变量

可以控制被引用的函数和变量 ,_all_(模块内置变量,内置属性)。

在模块里定义_all_

__all__ = ['a','c'] 这样在from 模块 import * 时,别的模块就只能导入a、c变量(可以强行from 模块 import b 强行导入) from import 用法比较灵活 可以从包引入模块

—init—.py的用法

1.代码换行最好用(),也可以在末尾加上反斜杠\

2.__init__.py的作用:

(1)当 包 或者该包下的模块变量被导入时候,该文件自动执行,也可以用来做包和模块的初始化

(2)可以在__init__.py文件中定义__all__变量来定义该包下哪些模块可以被其他模块引用(from 包  import *)

(3)可以利用__init__.py文件做批量导入

在子包的__init__.py文件名导入需要的模块,然后在上一级import子宝 名,进行模块的批量导入

注意:引用的时候注意命名空间 子包名.def

3.__init__.py文件名就是包名

避免循环导入

例如:直接循环

P1.py

P2.py

间接循环

在p1中导入p2,p2中引入p3,p3中引入p1,形成闭环

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

模块内置变量

infos=dir()

print(infos)

dir() 可以查看内置的变量,如果想看指定的模块的内置变量即可在括号里写上需要写的值

1. __name__: 模块的完整名字,包括命名空间.模块名

2. __package__: 模块所在的包

3. __file__ :文件所在的物理路径 完整的windows路径

4. __doc__: 模块内的注释说明内容

Py中没有三目表达式

Python的普通模块必须有一个包,当想要把一个可执行文件当做一个普通模块运行时,可以使用-m参数

如 :python  -m 命名空间(包).模块名

在这里就是把c15当做一个模块来运行了

作为一个普通的模块运行时必须要有一个包作为载体

所以要向前退到之前的空间 再去找包.模块

添加

if __name__='__main__':

pass

意思是:Make a script both importable and executable (让这个脚本既可以作为一个普通模块被导入到其他模块中,也可以作为可执行模块)

作用:判断当前模块是否为入口文件

相对导入和绝对导入

1.顶级包和入口文件在同一个等级的

2.(1)绝对路径:从顶级包一直到模块的这个路径,例如package2.package4.m2

(2)相对路径:一听就与绝对路径相对应,相对路径是把模块的路径中模块前面的那些花里胡哨的文件夹名字给去掉,光剩下点了

3.绝对路径在入口文件导入模块或者其他模块导入模块时都可使用,而相对路径只能在其他模块导入模块时使用,相对路径用法如下:我们以某个不知名的模块m2导入另一个平凡的模块m3为例

(1)如果m3与m2在同一个文件夹中,则加一个点

(2)如果m3比m2高一级,则加两个点,以此类推

4.终极规则:导入的模块一定要在顶级包下面

入口文件可以使用绝对路径导入。

但是不可以使用相对路径导入,相对路径能够找到对应的模块是根据内置模块变量__name__来定位,入口文件被执行后__name__就不是所谓的模块名而是将被python改成__main__  , __main__ 模块是不存在的,所以不可以使用相对路径导入。如果想用相对导入也是可以的,用模块的形式,返回模块的上一级 python -m demo.main

函数

round(a,2)函数将a保留小数点后两位

还可以进行四舍五入的功能

如何快速了解内置函数功能的方法

python ---help(round)回车

敲击键盘的回车可以翻页

import this 打印出python之禅

函数的特性:

1、功能性

2、隐藏细节

3、避免编写重复的代码,组织代码

1、函数的结构:def funcname(parameter_list),函数体需要缩进

1)参数列表可以没有;

2)函数体里可以使用return来返回结果;如果没有return这个关键字,则Python认为该函数返回的是None这样一个空值。

2、函数的几个特点:

1)函数定义后,必须要调用这个函数,才能起作用。

2)调用必须放在函数定义之后,不能在之前。

3)系统默认995次递归,超出则报错。可用import sys, sys.setrecursionlimit(1000000)来设定递归次数;实际上达不到百万次的递归。

4)定义函数或变量时,尽量避免和Python的内置函数同名。

如何让函数返回多个结果

return 后面的语句不会执行

def damage(skill1,skill2):

damage1 = skill1*3

damage2 = skill*2+8

return damage1,damage2

damages = damage(3,6)// 用序号显示返回结果是非常不好的习惯

print(type(damages))

好的方式是:

skill1_damage , skill2_damage=damage(3,6)

print(skill1_damage , skill2_damage)

序列解包:用有意义的变量名称来返回函数的值

序列解包与链式赋值

什么是序列解包

d = 1,2,3

a, b, c = d

print(a, b, c)

序列解包:把一个序列按照其中的元素的个数拆解成若干从而达到我们想要的结果的过程叫做序列解包

在序列解包时,变量数量和值的数量必须的一致

python多种赋值方式

a = 1

b = 2

c = 3

a, b, c = 1, 2, 3

链式赋值:

a = b = c = 1

参数(关键在于函数调用而不是定义上):

①必须参数:函数的参数列表中定义的必须赋值的参数。必须放在参数列表的前面。

②关键字参数:可以在函数调用时明确指出实参是传给哪个形参的,不一定要按照形参顺序。如:

def add(x, y):

...

return result

c = add(y = 3, x = 2)

③默认参数:没有设置默认值的参数必须传递实参。

默认参数的即为gender和age和college里提前设定好的

默认参数不能和自己定义的实际参数相同

④可变参数。如:

def demo(*param):

print(param)

print(type(param))

demo(1,2,3,4,5)

结果为:

1,2,3,4,5

tuple类型

也就是说python会自动将可变参数对应的实参转化成tuple类型。

可变参数

1)定义一个拥有可变参数的函数: 括号内形参前加星号*

2)Python会自动把可变参数列表所对应的实参组装成一个tuple;

3)调用时直接传元组,则返回的结果是一个二维元组;若不想形成二维数组,调用时可以使用*,它将把元组里的元素平铺传递给函数。此时,*的作用是把元组里面的元素平铺出来,传递给函数;

4)可变参数可以和其他类型参数结合记起来。如可以在定义时加上必须参数,但可变参数必须要放在后面;

5)函数参数的顺序是,必须参数、可变参数,默认参数必须在最后;当需更改默认参数值,必须用关键字参数给默认参数赋值;

6)鉴于此,不赞成把函数参数类别设计如此复杂

关键字可变参数:

格式:

def demo(**param):

pass

这样在调用时可以传递多个关键字参数,此时python会将其转化为字典类型dict。若还想传递字典类型而不转化为多维数组,调用时需加上**。

小技巧:

遍历字典类型数据方法:

for key,value in param.items():

print(key, ':', value)

作用域链

1)局部变量会在作用域内被优先使用;

2)局部变量具有相对性。如c=2这个变量在func1()函数中是局部变量,但对func2()函数来说,却是它的上一级,因此不是局部变量,可以被func2()来引用;

3)逐层逐级向外寻找变量的定义,很像一个链条,因此作用域有链式的特性;

4)如果是for循环向函数体内寻找变量,算作用域链吗?不算。原因是for循环体不是一个作用域,它对循环体外变量的调用属于函数体内变量调用的正常行为。

作用域链逐级寻找变量,但不包括for循环

Global关键字

global关键字:

作用:在函数外部引用函数内部变量,即把局部变量变成函数外部可引用的变量。

def demo():

global c

c = 2

demo()

print(c)

ps:    import 导入模块后可以使用模块的全局变量。

Python基础语法笔记2的更多相关文章

  1. python基础语法及知识点总结

    本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...

  2. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  3. Python 基础语法(三)

    Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...

  4. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  5. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  6. Python 基础语法

    Python 基础语法 Python语言与Perl,C和Java等语言有许多相似之处.但是,也存在一些差异. 第一个Python程序 E:\Python>python Python 3.3.5 ...

  7. 吾八哥学Python(四):了解Python基础语法(下)

    咱们接着上篇的语法学习,继续了解学习Python基础语法. 数据类型大体上把Python中的数据类型分为如下几类:Number(数字),String(字符串).List(列表).Dictionary( ...

  8. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

  9. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

随机推荐

  1. codeforces 597 div2 E. Hyakugoku and Ladders(概率dp)

    题目链接:https://codeforces.com/contest/1245/problem/E 题意:有一个10x10的网格,左下角是起点,左上角是终点,从起点开始,如图所示蛇形走到终点,每一步 ...

  2. Wx-小程序中使用伪类选择器实现border-1px

    .borders::before{ position: absolute; left:; top:; content: " "; width: 100%; height: 1px; ...

  3. Java入门学习路线目录索引

    原创 Java入门学习路线目录索引 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/One_ ...

  4. springboot 创建子父工程

    1.创建子父工程 2.添加pom配置文件 2.1  父工程pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  5. vue项目依赖的安装

    npm install element-ui --save npm install vuex  --save npm install axios  --save npm install moment ...

  6. Educational Codeforces Round 81 (Rated for Div. 2)E(线段树)

    预处理把左集划分为大小为1~i-1时,把全部元素都移动到右集的代价,记作sum[i]. 然后枚举终态时左集的大小,更新把元素i 留在/移动到 左集的代价. 树状数组/线段树处理区间修改/区间查询 #d ...

  7. socketserver 模块简介

    一.socketserver模块简介 socketserver模块简化了网络编程,模块下有五个服务类:BaseServer.TCPServer.UDPServer.UnixStreamServer.U ...

  8. Django框架之ORM的相关操作之一对一关系(四)

    ORM中一对一在当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁,那么就把不常用的字段单独拿出来做成一张表,然后通过一对一进行关联起来.举个例子:在我们登录某个账户的时候,一般会显示 ...

  9. Goland debug失败

    在使用goland使用debug调试代码出现 API server listening at: 127.0.0.1:56871could not launch process: debugserver ...

  10. 洛谷 P3956 棋盘(记忆化搜索)

    嗯... 题目链接:https://www.luogu.org/problem/P3956 这是一道比较好搜的题,注意一些剪枝.预处理和魔法的处理问题(回溯). AC代码: #include<c ...