#1. #A:函数的定义与使用 #B:传递实参的方法有:位置实参、关键字实参,还可以使用字典和列表 #C:python不支持函数重载 #D:函数默认形参必须是不可变对象,可以指定为None def fun(value0, value1 = None, value2 = "szn"): print(str(value0) + " " + str(value1) + " " + str(value2)) fun(1, 2, "s") #1 2 s fun(value0 = 1, value1 = 2) #1 2 s fun(value0 = 'szn', value1 = 1, value2 = 2) #szn 1 2 fun(1) #1 None szn fun('szn', value2 = 1, value1 = 2) #szn 2 1 #fun(value0 = 'szn', 1, 2) #运行出错 #2. #A:对于不可变参数作为函数形参时候,相当于C++的传值调用,比如字符串,数字都是不可变的 #B:对于可变参数作为函数形参时候,相当于C++的传引用调用,比如列表,字典都是可变的 def fun(value): #此fun函数会覆盖上一个定义的fun函数 value = 10 value = 1 fun(value) #fun(value0 = 'szn', value1 = 1, value2 = 2)#运行会出错 print(value) #1 def fun(value): value.append(10) Test = [1] fun(Test) print(Test) #[1, 10] #3. #A:函数返回值 def fun(value): value.append(0) return value Test = [1] Test1 = fun(Test) Test1[0] = 2 print(Test) #[2, 0] print(Test1) #[2, 0] #4. #A:传递任意数量的实参 def fun(*value): #*value将创建一个空的元组,将所有接受到的值都放入其中 # value[0] += 1 #运行会出错 print(value[0]) #1 print(value) #[1, 's'] fun(1, 's') #5. #A:结合使用位置实参和任意数量的实参,必须在函数定义中将接纳任意数量实参的形参放在最后 def fun(size, *value): print(str(size), end = " ") for v in value: print(str(v), end = " ") fun(10, 1, 2, 3) #10, 1, 2, 3 print("") #6. #A:可以让函数接受任意数量的键-值对 def fun(value0, **value1): print(str(value0), end = ' ') print(value1) fun(10, value1 = '3', value2 = {1: 's'}) #10 {'value2: {1: 's'}', 'value1': '3'} Test = {'3' : 2, 's' : 1} #这里的键值必须是字符串类型 fun(10, **Test) #10 {'3': 2, 's': 1} print("") #7. #A:将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码 #B:一般import应该放在程序开始的地方 import Te #Te文件只需存在当前目录下即可 这句代码让Te里的所有函数可以被使用 并且当此文件是第一次被导入当前文件的时候,会从上到下执行Te文件里的代码 #Te.py print("import") #import Te.TeFun() #Te.py #TeFun() #出错 print("") from Te import TeFun #由于Te文件不是第一次被导入,所以不执行Te里面的代码 TeFun() #Te.py #8. #A:如果导入的函数名称太长或者与当前文件的函数名称存在冲突,可以在导入函数的时候使用as给函数指定一个别名 #B:可以给导入的模块重命名 #C:使用*可以导入模块里的所有函数,但是不推荐使用,容易产生名字冲突 print("") import Te as T T.TeFun() #Te.py from Te import TeFun as TFun#由于Te文件不是第一次被导入,所以不执行Te里面的代码 TFun() #Te.py from Te import* #由于Te文件不是第一次被导入,所以不执行Te里面的代码 不建议使用这种方法 TeFun() #Te.py