# -*-coding:utf-8 -*-
# @Time : 19:41
# @Author: 黄荣津
# @File : 37.函数的定义与调用.py
# @Software: PyCharm
def calc(a,b): #a,b称为形式参数
c=a+b
return c
result=calc(10,20) #10,20成为实际参数
print(result)
res=calc(b=10,a=20) # =左侧的变量的名称称为关键字参数
print(res)
# -*-coding:utf-8 -*-
# @Time : 19:57
# @Author: 黄荣津
# @File : 38.函数参数传递的内存分析.py
# @Software: PyCharm
def fun(arg1,arg2):
print('arg1',arg1)
print('arg2', arg2)
arg1=100
arg2.append(10)
print('arg1', arg1)
print('arg2', arg2)
n1=11
n2=[22,33,44]
print(n1)
print(n2)
print('-------------')
fun(n1,n2) #按位置顺序传参
print(n1)
print(n2)
'''在函数的调用过程中,进行参数的转递
如果是不可变对象,在函数的修改不会影响实参的值,arg1的修改为100,不会影响n1的值
如果是可变对象,在函数体的修改会影响实参的值,arg2的修改,append(),会影响到n2的值
'''
'''函数参数定义-默认值参数'''
def fun(a,b=10): #b称为默认值参数
print(a,b)
#函数的调用
fun(100)
fun(20,30) #30会把10覆盖掉
# -*-coding:utf-8 -*-
# @Time : 20:13
# @Author: 黄荣津
# @File : 39.函数的返回值.py
# @Software: PyCharm
def fun(num):
odd=[] #存计数
even=[] #存偶数
for i in num:
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even
#函数的调用
lst=[10,29,34,23,44,53,55]
print(fun(lst))
'''
函数的返回值
(1)如果函数没有返回值,return可以不用写
(2)函数的返回值如果是一个,直接返回类型
(3)函数的返回值如果是多个,返回的结果为元组
'''
def fun1():
print('hello')
fun1()
def fun2():
return 'hello'
res=fun2()
print(res)
def fun3():
return 'hello','world'
print(fun3())
# -*-coding:utf-8 -*-
# @Time : 20:42
# @Author: 黄荣津
# @File : 40.函数参数形参个数可变.py
# @Software: PyCharm
def fun(*args): #函数定义时的 可变的位置参数只能是一个,返回是元组类型
print(args)
fun(10)
fun(30,32)
fun(2,6,4)
def fun1(**args): #个数可变的关键字参数,返回是字典类型
print(args)
fun1(a=10)
fun1(a=10,b=20,c=30)
def fun2(*args1,**args2):
pass
'''
在一个函数的定义过程中,既有个数可变的关键字形参,也有个数可变的位置形参
要求:个数可变的位置形参要放在个数可变的关键字形参之前
'''
# -*-coding:utf-8 -*-
# @Time : 20:57
# @Author: 黄荣津
# @File : 41.函数的参数总结.py
# @Software: PyCharm
def fun(a,b,c):
print('a',a)
print('b', b)
print('c', c)
#函数的调用
fun(10,20,30)
lst=[11,22,33]
fun(*lst) #在函数调用时,将列表的每一个元素都转换为位置实参转入
fun(a=100,b=200,c=300) #函数的调用
dic={'a':111 , 'b':222,'c':333}
fun(**dic) #在函数调用时,将字典中的键值对都转换为位置实参转入
# -*-coding:utf-8 -*-
# @Time : 20:35
# @Author: 黄荣津
# @File : 42.递归函数.py
# @Software: PyCharm
def fac(n):
if n==1:
return 1
else:
return n*fac(n-1)
print(fac(6))
def fib(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fib(n-1)+fib(n-2)
#斐波那契数列第六位上的数字
print(fib(6))
#输出这个数列的前6位上的数字之和
sum=0
for i in range(1,7):
sum=sum+fib(i)
print(sum)