网站建设补充协议范本,织梦做的网站如何放在网上,中国新闻最新消息今天,十条网站建设的seo策略形参与实参# 参数介绍#xff1a;# 函数为什么要有参数#xff1a;因为内部的函数体需要外部的数据# 怎么定义函数的参数#xff1a;在定义函数阶段#xff0c;函数名后面()中来定义函数的参数# 怎么使用函数的参数#xff1a;在函数体中用定义的参数名直接使用# 实参# 函数为什么要有参数因为内部的函数体需要外部的数据# 怎么定义函数的参数在定义函数阶段函数名后面()中来定义函数的参数# 怎么使用函数的参数在函数体中用定义的参数名直接使用# 实参有实际意义的参数# -- 在函数调用的时候()中传入的参数# 形参参数本身没有意义有实参赋予形参值后该形参就具备了意义# 补充有默认值的形参在没有被实参赋值具备的是自身意义但一旦被实参赋值意义同实参 - def add(n1, n22):# -- 在定义函数的时候()中出现的参数# 形参范畴def add(n1, n2): #形参n1n2在没有被实参赋值时没有实际意义被什么意义的实参赋值就被赋予了什么意义return n1 n2# 实参范畴print(add(a, b)) #实际的字符串print(add(10, 20)) #实际的数字a 200b 300print(add(a, b)) #存放实际数字的变量形参是对实参的值拷贝# 形参与实参可以重名但是代表的是两个不同的变量# 不可变类型形参发生重指向实参不变deffn(num):print(1:, num) #10num 20print(2:, num) #20num 10fn(num)print(3:, num) #10# 可变类型形参发生值的内部变化实参变两个指向的是同一个地址deffunc(ls):print(1:, ls) #[10]ls.append(20)print(2:, ls) #[10, 20]ls [10]func(ls)print(3:, ls) #[10, 20]实参的分类# 实参分为1.位置实参 2.关键字实参deffn(a, b):print(a, b)# 1)拿实际值进行传参fn(10, 20) #10 a | 20 b# 2)拿位置实参进行传参形参与实参进行位置一一对应eg:一号为的实参一定传给一号位的形参a 100b 200fn(a, b)#a:100 a | b:200 bfn(b, a) #b:200 a | a:100 b# 3)拿关键字实参进行传参指名道姓进行传参 - 传参的过程过指名道姓形参# 明确形参名目前为a和bfn(a1000, b2000) #a:1000 a | b:2000 bfn(b2000, a1000) #b:2000 b | a:1000 aa 666b 888# 前面的是形参名后面的是传递的实参名fn(aa, bb) #a:666 a | b:888 b# 位置实参一定按照位置且个数要一一对应进行传参# 关键字实参指名道姓进行传参个数一致位置可以改变进行传参# 实参组合传参规则必须先传位置实参再传关键字实参形参的分类# 六大分类# 1.无值位置形参(位置形参)可以被位置与关键字实参进行传参必须传值# 2.有值位置形参(默认形参)可以被位置与关键字实参进行传参可以不用传参采用默认值# 3.可变长位置形参可以接受前两个没有接收完位置实参接收的个数可以为0~n个0个是就是空元组# 4.无值关键字形参只能由关键字实参进行传参必须传值# 5.有值关键字形参只能由关键字实参进行传参可以不用传参采用默认值# 6.可变长关键字形参接收45没有接收完的关键字实参接收的个数可以为0~n个0个是就是空字典# 声明顺序# 位置形参:a - 默认形参:b - 可变长位置形参:args - 有无默认值关键字形参:cde - 可变长关键字形参:kwargsdef fn(a, b10, *args, c, d20, e, **kwargs):pass# 注意点# 1.可变长位置形参只能接受位置实参要想被附上值前面的有值位置形参的默认值没有多大意义# 2.args与kwargs是可变长形参的变量名所以可以自定义但约定俗成就用它俩# 常出现的组合def f1(*args, **kwargs):passdef f2(a, b10, **kwargs):passdef f3(a, *args, **kwargs):passdef f4(a, *, x, **kwargs):passdef f5(a, *args, x, **kwargs):pass# 使用法则# 1.所有位置形参全部采用位置实参进行传值# 2.所有关键字形参全部采用关键字实参进行传值# 3.不管位置还是关键字形参全部按照顺序进行传参可变参数的整体使用# 1、可变位置形参以元组方式接收值# 如接收102030三个数def fn1(*args):print(args) #(10, 20, 30)# 第一种传参fn1(10, 20, 30)# 第二种传参t (10, 20, 30) #单列集合及字符串类型都可以fn1(*t)# 2、可变位置实参以字典方式接收值def fn2(**kwargs):print(kwargs) #{name: Owen, age: 18}# 第一种传参fn2(nameOwen, age18)# 第二种传参d {name: Owen, age: 18} #单列集合及字符串类型都可以fn2(**d)函数对象# 函数名就是存放了函数的内存地址存放了内存地址的变量都是对象即 函数名 就是 函数对象打散机制def fn(*args, **kwargs):print(args)print(kwargs)t (1, 2, 3)dic {a: 100, b: 200, c: 300}# *单列容器 会打散单列容器# **双列容器 会打散双列容器fn(1, 2, 3, a100, b200, c300) #(1, 2, 3) {a: 100, b: 200, c: 300}fn(*t, **dic) #(1, 2, 3) {a: 100, b: 200, c: 300}fn(*(1, 2, 3), **{a: 100, b: 200, c: 300}) #(1, 2, 3) {a: 100, b: 200, c: 300}# 字符串也可以被打散fn(*abc) #(a, b, c) {}print(*abc) #a b c# 测试def xingxing_test(*args, **kwargs):print(args)print(kwargs)print(-------------------------------------------------------------------)print(*args)print(*kwargs)#print(**args) # 报错#print(**kwargs) # 报错xingxing_test(str_1, list_2, tuple_2, dic_3, set_4)输出(abcd, [3, 4, 5], (1, 2, 3), {a: 1, b: {c: 1}}, {g, f, e, h}){}-------------------------------------------------------------------abcd [3, 4, 5] (1, 2, 3) {a: 1, b: {c: 1}} {g, f, e, h}xingxing_test(*str_1, *list_2, *tuple_2, **dic_3)输出(a, b, c, d, 3, 4, 5, 1, 2, 3){a: 1, b: {c: 1}}-------------------------------------------------------------------a b c d3 4 5 1 2 3a b