Python是一个面向对象的解释型的交互式高级脚本语言。Python被设计成一种高可读性的语言,因为它大量地使用了英语中的单词作为关键字,而且不像其他语言使用标点符号构成复杂的语法结构,Python的语法结构非常少。
Python是一种带有对象、模块、线程、异常和内存自动管理的编程语言。
在于它简单易用,可移植,可扩展,内置数据结构,并且它是一个开源的
PEP 8是一个编码约定,一组推荐,关于如何编写Python代码更具可读性
标识符不建议使用下划线开头:因为在 Python 中以下划线开头的变量为私有变量
标识符就是一个名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。Python 标识符的命名不是乱来的,而是要遵守一定的命令规则:
标识符是由字母(A--Z 和 a--z)、下划线和数字组成。如果标识符中出现除了这 3 类字符之外的其他字符,就肯定是不合法标识符。
标识符的第一个字符不能是数字。
标识符不能和 Python 关键字相同。
标识符中的字母是严格区分大小写的。
以下划线开头的标识符有特殊含义,除非特定场景需要,应避免使用以下划线开头的标识符。
标识符可以是汉字。但我们应尽量避免使用汉字作为标识符,这会避免遇到很多没必要的错误。
>>> list=[1,2,3,4]
>>> it = iter(list) # 创建迭代器对象
>>> print (next(it)) # 输出迭代器的下一个元素
1
>>> print (next(it))
2
2. 生成器:使用了 yield 的函数被称为生成器,在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
import sysdef fibonacci(n): # 生成器函数 - 斐波那契a, b, counter = 0, 1, 0while True:if (counter > n): returnyield aa, b = b, a + bcounter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成while True:try:print (next(f), end=" ")except it()输出:0 1 1 2 3 5 8 13 21 34 55
字典存储键值对数据
lists = {1:'a',2:'b',3:'c'}#字典最外面用大括号,每一组用冒号连起来,然后各组用逗号隔开。
#字典最大的价值是查询,通过键,查找值。
特点就是:可重复,类型可不同。python里的列表用“[]”表示
lst = ['arwen',123]
print(lst[0])
print(st[1])lst[0] = 'weiwen'
元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示
tup = ('arwen',123)
print(tup[0])
print(tup[1])
集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合
lst = [ 1, 1, 0]
lst_set = set( lst ) #lst_set 为1 , 0
tup = (2, 2, 1)
tup_set = set( tup) # tup_set为2 , 1
for item in lst_set:print(item)
列表中元素是可以不同类型的,数组中为同一类型
Python使用lambda来创建匿名函数。
func=lambda x:x+2
print(func(1))
print(func(2))#以上lambda等同于以下函数
def func(x):return(x+2)
filter(函数,序列)函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
def is_odd(n):return n%2==1newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
print(newlist)Python3.6结果:<filter object at 0x00000184ED881358>
上面lambda和filter合在一起:
newlist = list(filter(lambda n:n%2==1,[1,2,3,4,5,6,7,8,9,10]))
print(newlist)
结果:[1, 3, 5, 7, 9]
装饰器是修改其他函数的功能的函数,有助于使得代码更简短。
Python 内置的 3 种函数装饰器,分别是 @staticmethod、@classmethod 和 @property,其中 staticmethod()、classmethod() 和 property() 都是 Python 的内置函数。
#funA 作为装饰器函数
def funA(fn):print("C语言中文网")fn() # 执行传入的fn参数print("")return "装饰器函数的返回值"
@funA
def funB():print("学习 Python")等价于:
def funA(fn):#...fn() # 执行传入的fn参数#...return '...'
def funB():#...
funB = funA(funB)#输出结果:C语言中文网学习 Python
通过比对以上 2 段程序不难发现,使用函数装饰器 A() 去装饰另一个函数 B(),其底层执行了如下 2 步操作:
局部变量:如果在函数体内的任何位置为变量分配了一个新值,则假定它是本地的
全局变量:仅在函数内引用的那些变量是隐式全局变量
变量调用的顺序是先找局部作用域,如果找不到,再往外层找,然后在找全局作用域
name="gouguoqi"
def change_name():global namename="miaoye"print ("111",(name))
change_name()
print(name)结果:111 miaoyemiaoye
global name,就代表调用全局的变量name。专业的说法是global 后面的name是一个指针,一个内存地址,直接调用的那个内存地址,调用之后在子程序(局部程序)里面再次给name赋值的话就修改了全局变量name了
pass是Python中的空操作语句,或者说,它是一个复杂语句中的一个空间占位符,只是用来表示空白,什么都不用写
如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。
当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。
使用 args 和 kwargs 作为参数名只是举例,可以任意替换
类似的 break 语句可以跳出循环,continue 语句可以跳到下一轮循环
Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。
Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。
Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。
Python不需要显式内存管理,因为解释器本身会将内存分配给新变量并自动释放它们
当退出 Python 时是否释放所有内存分配,答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放,另外不会释放 C 库保留的部分内容
线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。
GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。
多线程类似于同时执行多个不同程序,其优点:
在 Python 中有7中运算符:算术运算符、关系 (比较) 运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算术运算符包括+、-、*、/、//(地板除法)、%(取模)、**(取幂)
关系运算符用来比较两个对象,包括<、>、<=、>=、==、!=
一般将算数运算符和赋值符号用在一起,包括+=、-=、*=、/=、**=、//=、%=
Python中有三个逻辑运算符:and、or、not
位运算符按二进制位对值进行操作。
使用 in 和 not in 运算符我们可以判断某个值是否在成员中
is 和 is not 运算符可以判断两个对象是否相同
本文发布于:2024-02-02 15:16:45,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685820444651.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |