6函数和变量

Posted huangguoming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6函数和变量相关的知识,希望对你有一定的参考价值。

函数定义
def 函数名(参数1,参数2.....):
函数体
 
用return 返回值
函数内return后面的代码不再执行
 
用来确定传入参数类型
a = 1
isinstance(a,(int,float))
>>True
 
函数定义必须在函数调用前,但函数调用函数时可以无视顺序,因为按照顺序解释代码时,函数define会存到内存,但不执行函数内部的代码,只有真正调用函数时才执行函数内的代码
 
 
可变类型:list dict (x+=x和x=x+x不同,在参数传递中后者改变了x的引用,而前者没有)
不可变类型: 数字,字符串 元祖(例如 int i = 1,i = 2,修改的是i的指向)
 
全局变量可以在后面的代码使用,
局部变量只能在函数使用
 
当局部变量和全局变量名字相同时,python会优先使用局部变量
 
在函数中修改全局变量:
1.如果是可变类型,可以直接执行修改变量的值(或者引用,直接=)
2.本质上在函数中修改不可变类型的全局变量是修改了变量的引用,需要加global声明,不加则修改不了引用,默认调用局部变量了
如果函数内局部变量和全局变量命名相同时,调用变量时,函数优先使用局部变量
 
全局变量定义在调用函数之前就行
 
函数返回多个参数
return a,b 用 x,y = test()接受
return a,b 用x = test()接受,则x为元祖tuple
return [a,b] x = test()接受, x为list
 
函数参数缺省
test(x,y,z = 10,p = 1)
且非默认参数必须在有默认参数之前
缺省参数可以多个
当参数位置不确定时,可以指明参数名确认参数
例:test(x,..y=1,z)
调用时test(2,..y = 4,9)
 
不定长参数
 
def test(x,y,*args,**kwargs):
sum = x + y
for i in args :
sum += i
for i in kwargs.values():
sum += i
print("和为%s"%sum)
test(1,2,3,4,num1 = 1,num2 = 2)
 
*args,**kwargs分别表示不定长参数,和带关键字的不定长参数,且命名可变
集合的拆包
nums = [3,4]
nums2 = {"num1":1,"num2":2}
test(1,2,*nums,**nums2)
python中函数参数传递是引用传递(而不是值传递)。对于不可变类型,因为变量不能修改,所以运算不会影响实参,只是改变形参的引用。对于可变类型,函数体中的运算会改变实参的值。

以上是关于6函数和变量的主要内容,如果未能解决你的问题,请参考以下文章

6函数和变量

网易云课堂_C语言程序设计进阶_第六周:程序结构:内存模型(全局变量和局部变量)头文件宏定义函数指针和回调函数,ACL图形库的消息机制

变量作用域和内存问题--笔记6

概率论 随机变量及常用6大分布整理

Go36-4,5,6-变量

创建函数-----------(在函数中使用变量向函数传递参数在函数中处理变量关键字local)