函数(作用域,闭包)

函数

# 位置参数
def info(name, age):
    print("name", name)
    print("age", age)

info(18,"yuan")

info("yuan", 18)

默认参数

def info2(name, gender="male"):
print("name", name)
print("gender", gender)

info2("yuan")
info2("rain")

info2("李四小姐", "female")

关键字参数

def info(name, age):
print("name", name)
print("age", age)

info(age=18, name="yuan")

不定长参数

def cal(caozuo,x,*y):

if caozuo =="+":

print(y)

s =0

for i in y:

s += i

print(s)

cal("+",18,77,78,76)

cal("-",18,77)

cal("*",18,77)

cal("/",18,77)

不定长参数

def cal(caozuo,x,*nums):
if caozuo == "+":
print(x,nums) # (18, 77, 78, 76)
s = 0
for i in nums:
s += i
# z = x+s
print(s)
# print(z)
cal("+", 18, 77, 78, 76)

def print_stu_info(name,age,gender,**kwargs):
print("name",name)
print("age",age)
print("gender",gender)
print("kwargs",kwargs)

print_stu_info(name="张三",age=21,gender="male",height=185)
print_stu_info(name="张三",age=21,gender="male",weight="90kg")
print_stu_info(name="张三",age=21,gender="male",height=185,weight="80kg")

同时使用*args和**kwargs:

def print_stu_info(name,age=18,*args,**kwargs):
print(name,age)
print(args)
print(kwargs)
print_stu_info("yuan",20,"china","bejing",height="188cm",weight="60kg")

 

注意点:

1、参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

2、不定长参数的长度可以为零。

3、args 和 kwargs其实只是编程人员约定的变量名字,args是arguments的缩写,表示位置参数;kwargs 是keyword arguments的缩写,表示关键字参数。

 

1.函数作用域

# 什么是作用域:变量的生命周期(存活阶段)
# python中函数、类可以独立划分作用域
# 作用域:L(local) E(enclosing) G (global) B (built-in)
L:本作用域 E:循环嵌套的外部作用域 G:全局域

# 案例1
# x = 100
#if 2 > 1:
#	x = 101
# print(x)

# 案例2
x = 100
def bar():
	#x = 10
	def foo():
	    #x = 1
	    print(x)
	foo()

bar()

# 案例3
def foo():
	x = 10
	print(x)

2.js作用域补充

function apple(){
	//var x = 100
	function foo(){
 	 // var x = 10
  	 //console.log(x)
        }

	function bar(){
           var x = 200
        }
        foo()
}

apple()


闭包

<script>
function show(){
    var name = "yuan"
	alert(name)
}
</script>

<script>
console.log(name)
name = "rain"
</script>

<button onclick="show()">show</button>

对闭包案例:计数器

<script>
var count = 0

function counter(){
	count ++  //count = count+1 
	console.log(count)
}
</script>


<script>
var count = 100
</script>

<buton onclick="counter()"></buton>

posted @ 2023-05-16 10:27  卡卡罗安  阅读(14)  评论(0)    收藏  举报