python开发学习笔记(二)——python语言进阶知识总览

这篇博客是Python开发学习笔记的第二部分,涵盖了函数及变量的深入探讨,包括传参、作用域和全局变量;介绍了lambda表达式、内置函数;详细阐述了类与变量,如类变量、成员变量、继承、权限和魔术方法;讨论了装饰器的多种应用场景和装饰带参函数的方法;讲解了python中的包与模块,以及异常处理和断言。内容丰富,适合Python初学者和进阶者阅读。
摘要由CSDN通过智能技术生成

想开个学习笔记系列,就是拉一遍python开发知识,希望可以涵盖编程基础、python基础、数据分析、web框架等。
本笔记系列由视频跟学+知识点补充组成,大致会按照视频教程划分目录,补充知识点参考文章将会进行标注。
视频课程地址:https://edu.csdn.net/course/detail/10041

1.函数及变量

函数:实现单一功能的代码块
help(func): 输出函数func的信息(如函数开头多行注释中的介绍)

(1)传参可变与不可变的区别

def func1(*args):
    print(type(args)) #output: <class 'tuple'> 是元组
    for i in args:
        print(i,end=' ')
func1(1,2,3,4) #output: 1 2 3 4
print()
def func2(**kwargs):
    print(type(kwargs)) #output: <class 'dict'> 是字典
    for (k,v) in kwargs.items():
        print(k,' ',v,end='||')
func2(name1 = 1,name2 = 2) #output: name1   1||name2   2||
#output
<class 'tuple'>
1 2 3 4 
<class 'dict'>
name1   1||name2   2||

(2)fun(*args,**kwargs)

关键字*args**kwargs:用于函数定义,将不定长数量的参数传递给一个函数。
*args:用来发送一个非键值对的不定长度的参数列表给一个函数。
**kwargs:用来发送一个键值对的不定长度的参数列表给一个函数。如果要在一个函数里处理带名字的函数,则需要用**kwargs关键字。

def func1(*args):
    for i in args:
        print(i,end=' ')
func1(1,2,3,4) #output: 1 2 3 4
print()
def func2(**kwargs):
    for (k,v) in kwargs.items():
        print(k,' ',v,end='||')
func2(name1 = 1,name2 = 2) #output: name1   1||name2   2||

(3)变量作用域

def func(val):
    val = 200 #直接在局部作用于定义参数val,如果是直接使用会优先在局部作用域查找变量名
    print(val) #200
val = 100
func(val)
print(val)#100 

(4)全局变量

使用 global 申明全局变量:

def func():
    global val
    print(val) #100
val = 100
func()

注意:形参不能是全局变量,否则会报错如下

def func(val):
    global val #形参不能是全局变量
    print(val) 
val = 100
func(val)
#output
    global val
    ^
SyntaxError: name 'val' is parameter and global

2.lambda表达式

格式:lambda 参数1,...参数n :函数体(该函数体只有一行语句,其计算值默认作为lambda函数返回值)

func = lambda a,b,c:a+b+c
print(func(1,2,3)) # 6

其他应用:

#字典按值排序
dict1 = {
   '1':4,'2':3,'3':2,'4':1}
res = sorted(dict1.items(),key=lambda items:items[1]) 
print(res) #[('4', 1), ('3', 2), ('2', 3), ('1', 4)]
#匿名函数自执行
print((lambda a:a*a)(2)) #4

3.内置函数

列举一些常用内建函数:

print(abs(-2)) #2 求绝对值
print(divmod(7,2)) #(3,1) 求商和余数
print(ord('A')) #65 求ascii编码
print(chr(65)) #A 由ascii编码求字符
print(pow(2,3)) #8 2**3
print(pow(2,3,4)) #0 (2**3)%4
print(sum([1,2,3],4)) #10 (1+2+3)+4(最多2个param)
func = compile('for i in range(0,10): print(i,end=" ")','','exec') #compile 数将一个字符串编译为字节代码。
exec(func) #0 1 2 3 4 5 6 7 8 9
func = compile('1+3','','eval')
print(eval(func)) #4
a = 1; b =
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值