
-----学习视频来源于马士兵教育-----
内容主要为了自己复习用,也可以让大家梳洗思路
#函数创建
def calc(a,b):
c=a+b
return c
result=calc(10,20) #位置实参
result=calc(b=10,a=20) #关键字实参
print(result) #30
def fun (user1,user2):
print('user1',user1) #user1 11
print('user2',user2) #user2 [22, 33, 44]
user1=100
user2.append(10)
print('user1',user1) #user1 100
print('user2',user2) #user2 [22, 33, 44, 10]
return
n1=11
n2=[22,33,44]
print('n1',n1) #n1 11
print('n2',n2) #n2 [22, 33, 44]
fun(n1,n2)
print('n1',n1) #n1 11 #n1是不可变对象,在函数体内不会影响实参的值
print('n2',n2) #n2 [22, 33, 44, 10] #n2是可变对象,在函数提的修改会影响到实参的值
#奇数和偶数分开
def fun(num):
jishu=[]
oushu=[]
for i in num:
if i%2:
jishu.append(i)
else:
oushu.append(i)
return jishu,oushu
n=[1,2,3,4,5,6,7,8]
print(fun(n)) #([1, 3, 5, 7], [2, 4, 6, 8])
#函数的返回值
#1、如果函数没有返回值,retrun可以省略
#2、函数返回值如果是一个值直接返回类型
#3、函数的返回值如果是多个,返回的结果为元组
def fun(a,b=10):
print(a,b)
fun(100) #100 10
fun(100,200) #100 200
print('hello',end='\t')
print('world') #hello world
def fun(*num): #位置参数,返回元组,只能是一个
print(num)
fun(10) #(10,)
fun(10,20) #(10, 20)
fun(10,2,30) #(10, 2, 30)
def fun1(**num1): #关键字参数,返回字典,只能是一个
print(num1)
fun1(a=10) #{'a': 10}
fun1(a=10,b=20) #{'a': 10, 'b': 20}
#在一个函数的定义过程,可变参数同时存在,关键位置参数在关键字参数前面def fun1(*num,**num1):
def fun(a,b,c):
print(a)
print(b)
print(c)
fun(1,2,3)
num=[1,2,3]
fun(*num)
fun(a=1,b=2,c=3)
dic={'a':1,'b':2,'c':3}
fun(**dic)
#返回结果都是1 2 3
def fun(a,b=10):
print(a)
print(b)
def fun1(*user):
print(user)
def fun2(**user):
print(user)
fun1(10,2,3) #(10, 2, 3)
fun2(a=1,b=2) #{'a': 1, 'b': 2}
def fun3(a,b,*,c,d): #*后采用关键字,前面采用位置实参
print(a)
print(b)
print(c)
print(d)
fun3(10,20,c=30,d=50) #10 20 30 50
#global 可以声明为全局变量
#计算6*5*4*3*2*1
def fac(n):
if n==1:
return 1
else:
return n*fac(n-1)
print(fac(6)) #720
#斐波那契数列
def fib(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fib(n-1)+fib(n-2)
print(fib(6)) #8
常见错误:
1、漏了末尾的冒号
2、缩进错误
3、英文符号携程中文
4、字符串和数字拼在一起
5、没有自定义变量
6、==比较运算符,=赋值运算符
1、ZeroDivisionError数算运算错误print(2/0)
2、indexError 索引错误 print(list[5])
3、KeyError
4、NameError print(num) #num没有定义
5、SyntaxError 语法错误
6、ValueError 传入无效的参数
#Tracerback 打印错误参数
import traceback
try:
print(1/0)
except:
traceback.print_exc()
##try 和except异常处理机制
try:
a=int(input('one:'))
b=int(input('two:'))
sum=a/b
print(sum)
except SyntaxError:
print('error')
except SyntaxError:
print('no 0')
except ValueError:
print('could be number')
print('game over')
##try----except----else异常处理机制
try:
a=int(input('one:'))
b=int(input('two:'))
sum=a/b
except BaseException as e: #基本的错误标识
print('error',e)
else:
print(sum)
##try----except----else---finally异常处理机制
try:
a=int(input('one:'))
b=int(input('two:'))
sum=a/b
except BaseException as e: #基本的错误标识
print('error',e)
else:
print(sum)
finally:
print('thank')#无论成功与否都会执行thanks操作









