基本语法

基本语法:
一,if 条件:
代码块1
else:
代码块2
二,
if 条件:
代码块1
elif 条件:
代码块1
elif 条件:
代码块1
。。。
else:
代码块1
三,
for 循环次数:
循环体
四;
while 不知道循环次 数的循环:
循环体
五;函数
1,def f(x):
''' 函数说明文档 '''
f(x)=x+1
return f(x)

2, 匿名函数:lambda  x,y : x+y
        g= lambda x,y :x**y
        g(x,y) ,传参
        f = lambda x,y :x  if x >= y else y
 3,变量的左作用域
        全局变量:申明在函数外或者类外的变量都是全局变量。从申明开始到整个文件结 
    束。
         局部变量:申明在函数中的变量激素是局部变量。从申明开始到整个函数结束。形参也是局部变量。
关键字:global 和nonlocal 只能在函数体重用。
              global 在函数中申明一个全局变量,
                用法:
              global  变量名
               变量名 = 值
           nonlocal 是在局部的局部中改变局部的变量。

4,函数调用时的内存分配:
每次调用函数系统会自动在内存(栈区间)中专门为这个函数开辟一个内存空间,用来保存在函数中声明的变量(形参也是声明在函数中的变量)函数调用结束后这个栈区间自动销毁。
5,python中,申明函数本质就是申明类型为function的变量。
6,变量可以作为函数参数,一个函数可以作为另外一个参数,如果一个函数的参数也是函数,那么这种函数叫实参高阶函数。
def fun1(x):
x() # x () 是函数调用语句
7,如果一个函数的返回值也是函数那么这个函数是返回值高阶函数

六,迭代器iter
1,容器型数据类型(序列),可变(不支持增删改),有序(不支持下标操作),保存在迭代器中的要元素,只能取,并且取出来后迭代器中就不再保存,也不可以再往迭代器中添加元素。
迭代器没有对应的格式的数据,迭代器只能是通过将其他的序列转换成迭代器,或者生成器。
iter1=iter([10,20,30])
print(iter1)
获取迭代器中的元素
不管用什么方式获取迭代器中的元素,获取一个就少一个。
2,获取单个元素--next(迭代器) --获取迭代器顶部的要还俗。
iter2=iter('hello')
print(next(iter2)) # h
print(next(iter2)) #e
print(next(iter2)) #l
print(next(iter2)) #l
print(next(iter2)) #o
print(next(iter2)) #报错,StopItertion

3,遍历

七,生成器
生成器就是迭代器,获取元素和迭代器一样
调用函数体中yield关键字的函数,就可以得到一个生成器
1,yield -- 只能出现在函数体中。
调用有yield关键字的函数 ,不会执行函数体,也不会获取返回值。而是得到一个生成器。
def func1 ():
print('我是一个函授‘’)
return 100
yield
print(func1())
2,生成器怎么产生数据--看一个生成器产生几个数据,看执行完生成器遇到几次yield , yield后面的值就是程程器能产生数据

def fun2():
yield 'abc'
yield 123

gen1 = fun2():
print(gen1) #abc
print(next(gen1)) #123

生成器不会保存所有元素,而是需要数据时候临时产生数据。获取生成器的时候,就去执行生成器对应的函数的函数体,从前往后执行,知道遇到yield 为止,并且将yield 后面的值作为结果。同时保存结束位置,获取下一个元素的是时候,接着 上次结束位置往后执行直到遇到下一个yield,如果执行函数结束都没遇到yield ,next函数就会报错StopIteration .
生成式:生成式本质就是生成器
语法:(表达式 for 变量 in 序列)
展开成生成器:
def func2 ():
for 变量 in 序列:
yield 表达式

gen1 = (x*2 for x in range (10)

语法:
list2 = [x*x for x in range(1,10)]

语法3:
(表达式 for 变量 in 序列 if
条件语句) --- 创建一个生成器

九,import 模块名 - 在当前模块中导入指定模块,导入后可以使用指定模块中所有的全局变量。
from 模块名 import 全局变量1,全局变量2.。。。。
from 模块名 import * ---导入模块中所有的全局变量,使用的时候直接用。

不希望被别的模块执行的代码放到下面的if语句中
if name== 'main':
for x in range (1000):
print ('login:', x)
login()

十,文件操作
基本步骤:打开文件-操作文件(读和写) ---关闭文件

打开文件 open( file,model ='r',encoding=None) --- 打开指定文件做指定操作
file -- 需要打开文件的路径,相对路径或者绝对路径,
model --- 字符串,文件打开方式,打开方式决定打开文件后的操作类型
r ,w ,br ,rb, bw ,wb ,a
encoding -- 设置文件内容的编码方式,固定写:‘utf-8’
注意:只有文本操作才能设置编码方式。编码和解码的方式必须一致
打开文件
f=open()
操作文件/;
文件对象.read() --
关闭文件:
文件对象.close()
移动读写位置(移动光标)
文件对象.seek(0)--- 将读写位置移动到文件开头。
文件对象.readline() ---- 读一行内容。
写操作:文件对象.write( 写的内容) -----将指定的内容写入文件中
数据持久化:
a,需要持久化的额数据保存在本地文件中
b. 需要数据的时候去文件中读数据
c.数据发生改变后将新数据写在文件中
二进制文件:图片,视频,音频,压缩文件
操作二进制文件,rb,wb,ab
所有带b的操作都不能设置encoding
f = open('./files/test1.txt', rb)
content = f.read()
print(type (content))
f.close()
打开文件的简写:
with open (文件路径,读写方法,encoding = 编码方式) as 文件对象:
文件域(文件操作)
这种方式打开文件,在文件域结束后文件会自动关闭。

json 数据
json格式; 一个json有且只有一个数据,必须是json支持的数据
json 支持的数据类型:
数字,字符串(双引号引起来的),布尔。数组(相当于python 中的列表), 字典(key只能是字符串),null (表示空)

在实际开发中
json转python
json python
数字类型 int或者float
字符串 字符串,变单引号
布尔 布尔,大写首字母
数组 列表
字典 dict
null None

json.loads(json格式下的字符串) --- 将Json 格式的字符串转换成对应的python 数据。
json.load(文件对象)
python json
int/float 数字
str 字符串,变为双引号
bool 首字母小写
list/tuple 数组
dict 字典
None null

方法:
json.dumps(python格式下的数据)
json.dump(文件对象)

异常捕获
一般是知道代码会出现异常,但是又不能修改代码去避免就可以通过异常捕获去处理。
语法一:
try:
代码段1 -- 可能出现异常的代码
except:
代码段2 -- 出现异常,程序不崩溃,执行代码段2
先执行代码段1,如果执行代码段1时候出现异常,程序不崩溃,直接执行代码段2;如果代码段1没异常,就不会执行代码段2.
语法2 :
try :
代码段1
except 异常类型 :
代码段2
先执行代码段1,如果执行代码段1的出现异常,判断异常类型是否是指定类型,如果是,程序不崩溃,执行代码段2 ,如果不一致,程序崩溃。不会执行代码段2.
语法3:
try:
代码段1
except(异常类型1,异常类型2,。。。。。):
代码段2
语法四:
try:
代码段1
except 异常类型1;
代码段11
except 异常类型2:
代码段22
except 异常类型3:
代码段33
.。。。
上面的四种语法后面都可以加finally:
代码段f 不管什么情况都执行
抛出异常-- 让代码在某种情况下主动崩溃,
raise 异常类型

类和面向对象
class Person():
def eat(self):
print('吃饭’)
def run (self):
print('跑步')
p1 =Person()
p1.eat()

什么是init方法
init是类中一个魔法方法,在创建对象时会被自动调用。
类的属性:对象属性,字段
字段---直接申明在类中函数的外面的变量,就是类的字段。
通过类.字段的方式使用。属性值不会因为对象的不同而不一样,这样的属性就申明成类的字段。
slef.属性名 = 值 的方式申明在init方法中
通过‘’对象.属性名’的方式去使用,属性值会因为对象不同二不一样,这样的属性就申明成对象属性
class Student:
def init(self,name,stu_id,score):
self.name = name
self.stu_id = stu_id
self.score = score
stu1 = Student('小明',1903032,89)
print(stu1.name)

class Rect:
def init(self,length,width)
self.length = length
self.width = width
def get_area(self):
return self.length * self.width

r1=Rect(5,4)
print(r1.get_area)

对象属性支持增删改查操作。
getattr(对象,属性名,默认值) - - 获取对象指定属性的值,如果属性不存在,不会报错,返回默认值。

对象.属性 = 值 --- 添加属性和值
setattr(对象,属性值,值) ---- 添加属性和默认值

删 -- 删对象属性
del 对象.属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容