IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python学习笔记05-变量的进阶 -> 正文阅读

[Python知识库]python学习笔记05-变量的进阶

一、变量的引用

1.变量和数据都是存在内存中的,函数的参数传递和返回值都是靠引用传递的
2.变量中记录的是数据在内存中的地址
3.变量中记录数据的地址,就叫做引用
id()能够查看变量总保存数据的内存地址
4.函数中实参给形参传递时,传递的是实参保存的数据的引用,而不是实参保存的数据

二、可变和不可变类型

不可变类型:int,float,tuple,
可变类型: list,dict

三、局部变量和全局变量

局部变量是在函数内部定义的变量,只能在函数内部使用
不同函数,可以定义相同名字的局部变量,彼此之间不会产生影响
局部变量:执行了函数下方代码后,才会被创建
在函数调用完成之后,局部变量被释放

若是全局变量和局部变量重名,在函数内部会创建新的局部变量
global num
num = 99
global会告诉解释器后面的变量num是全局变量,后面跟赋值语句时,会修改全局变量的值,而不会在函数内部创建局部变量
全局变量尽量采用gl_num的方式命名

四、函数的参数

return temp, cal = return (temp, cal) 返回一个元组

def tempcount():
	temp = 30
	wetness = 20
	return temp,wetness
gl_temp,gl_wetness = tempcount()#右边部分相当于返回元组
# 这种方式可以吧函数返回的元组内的数据分别保存到gl_temp和gl_wetness中
print(gl_temp)
print(gl_wetness)

4.1 面试题:a b交换方式

a = a+b
b =a-b
a=a-b

python专有写法

a,b = (b,a)
就可以吧a,b的值调换
当一个函数返回值时元组时,小括号可以省略
return a,b
那么就可以写成
a,b = b,a

4.2 可变参数与不可变参数

def demo(num):
	num = 100
	print(num)
gl_num = 99
demo(gl_num)
print(gl_num)

无论传递的参数是可变还是不可变的,只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的使用

def demo(num,num_list):
	print('函数内部')
	num = 200
	num_list = [1,2,3]
	print(num)
	print(num_list)
	print('函数代码完成')
	
gl_num = 99
gl_list = [4,5,6]
demo(gl_num,gl_list)
print(gl_num)
print(gl_list)

如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部数据

def mutable(num_list)
	num_list.append([1,2,3])
	print(num_list)
gl_list = [6,7,8]
mutable(gl_list)
print(gl_list)

4.3 面试题+=
在python中,列表变量调用+=本质上是在执行列表变量的extend方法, 不会修改变量的引用

def demo(num,num_list):
	print("函数内部代码")
	num += num
	num_list += num_list
	
	print(num)
	print(num_list)
	print("函数代码完成")
gl_num = 9
gl_list = [1,2,3]
demo(gl_num,gl_list)
print(gl_num)
print(gl_list)

4.4函数的缺省参数
定义函数时,可以给某个参数指定一个default,具有default的参数就叫做缺省参数,调用函数时,如果没有传入缺省参数的值,就在函数内部使用定义函数时指定的参数默认值,通常将常见的值设置为缺省参数,简化函数的调用
对列表排序方法:

gl_num_list = [6,3,9]
gl_num_list.sort()#升序
print(gl_num_list)

gl_num_list(reverse = True)#降序
print(gl_num_list)

4.5指定函数的缺省参数
在参数后使用赋值语句,可以指定参数的缺省值

def print_info(name,gender = True):           
    """                                                                           
    @param name: 姓名                           
    @param gender: True是男生,False是女生           
    """                                       
    gender_text = '男生'                        
    if not gender:                            
        gender_text = '女生'                    
    print("%s是%s" % (name,gender_text))       
print_info('aa')    
print_info("bb",gender = True)                          

4.5.1 缺省参数的注意事项
1.缺省参数,需要使用最常见的值作为default
2.如果一个参数的值不确定,则不应该使用缺省参数
3.带有default的缺省参数必须在形参的末尾

4.6 多值参数
有时候可能一个函数能够处理的参数的个数是不确定的,这个时候就可以用多值参数
python中有两种多值参数:
1.参数名前面加一个*可以接受元组,加两个**可以接受字典
2.一般给多值参数命名时,用以下两个名字:
*arg-----存放元组参数
**kwargs ------存放字典参数

#多值参数演示代码
def demo(num,*nums,**person):                 
    print(num)                                
    print(nums)                               
    print(person['name'])                             
demo(1)                                       
demo(1,3,2,3,4,5,name = 1,gender = True)                                             
#多值参数求和
                                    
def sum_numbers(*args):                      
    num = 0                         
    print(args)                     
    for i in args:                  
        num += i                    
    return num                      
result = sum_numbers(1,2,3,4)       
print(result)                       

元组和字典的拆包
在调用带有多值参数的函数时,如果希望:
1.将一个元组变量,直接传递给args
2.将一个字典变量,直接传递给kwargs
就可以使用拆包,简化参数的传递,拆包的方式是:
1.在元组变量前面加一个*
2.在字典变量前加一个**

def demo(*args,**kwargs):
	print(args)
	print(kwargs)
gl_nums = (1,2,3)
gl_dicts = {'name' : 1}

demo(*gl_nums,**gl_dicts)#拆包语法,简化元组,字典变量的传递,如果不使用拆包,gl_nums和gl_dicts都会传递给args这个变量
demo(1,2,3,name = 1)

4.7 递归
函数内部可以使用其他函数,也可以调用自己
递归的出口=参数的判断,避免出现死循环

递归累加:

def sum_numbers(num):
	if num == 1:
		return 1
	temp = sum_numbers(num-1)
	return num+temp
result = sum_numbers(3)
print(result)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2021-10-02 14:37:41  更:2021-10-02 14:40:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:31:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码