Python编程基础学习笔记---函数方面

       仅仅是在学习中写代码练习,将细节写下来方便记忆,并不推荐死记硬背,也不一定全部都要记下来,重要的是理解,在实际应用中可能并没有笔记中那么复杂,也不一定全部的用得到,只作为以后回顾复习参考用。

函数:功能性,隐藏细节,避免编写重复的代码

#print
a=1.123456
b=round(a,2)
print(b)#1.12
print(round(a,4))#1.1235

#查看内置函数方法
'''
help()
'''
help(round)
help(print)

1.组织代码 自定义函数
函数基本定义

def funcname(parameter_list):
    pass
#1.parameter_list参数列表可以没有
#2.return value/None,用return返回结果/没有return默认返回None
def add(x,y):
    result=x+y
    return result
add(2,5)#7,x==2,y==5
add(1,2,3)#TypeError: add() takes 2 positional arguments but 3 were given

printf('Hello')#要先定义函数name 'printf' is not defined
def printf(code):
    print(code)

def print(code):
    print(code)
print('Hello')#最大递归层数maximum recursion depth exceeded
#定义了一个和python内置函数同名的自定义函数

def print_code(code):
    print(code)
    return#函数会在这里终止
    print(code)
    print(code)
print_code('Hello')#Hello
#返回值可以是int或者更多,,,,,,甚至可以返回一个函数

def result_xy(number1,number2):
    result1=number1*3
    result2=number1+number2*2+10
    return result1,result2#函数返回多个结果
result_xy(3,6)#(9, 25)
a=result_xy(3,6)
print(a[0],a[1])#9 25
print(type(a))#<class 'tuple'>
b,c=result_xy(3,6)#序列解包
print(b,c)#9 25
print(type(b))#<class 'int'>
print(type(c))#<class 'int'>

#序列解包
a=1
b=2
c=3

a,b,c=1,2,3#可阅读性,便于理解

d=1,2,3
print(type(d))#<class 'tuple'>
e,f,g=d
print(e,f,g)#1 2 3

a1,b1=[1,2,3]#ValueError: too many values to unpack (expected 2)

2.参数

#1.必须参数
#2.关键字参数
#3.默认参数
def add(x,y):
    #形式参数,形参
    result=x+y
    return result
c=add(y=3,x=2)#形参x,y实参2,3
c=add(x=2)#TypeError: add() missing 1 required positional argument: 'y'

def print_abc_number(a,b,c):
    print(a,b,c)
print_abc_number(7,8,9)#7 8 9


#默认参数
def print_abc_number(a,b=5,c=6):
    print(a,b,c)
print_abc_number(4,5,6)#4 5 6
print_abc_number(4)#4 5 6
print_abc_number(4,c=7)#4 5 7
print_abc_number(4,c=7,b=9)#4 9 7可以不遵守循序
print_abc_number(4,b=9,7)#SyntaxError: positional argument follows keyword argument
print_abc_number(10,11,12)#10 11 12

def print_abc_number(a,b=5,c):
    print(a,b,c)
print_abc_number(4,5,6)#non-default argument follows default argument
#非默认参数不能放在默认参数之后
#修改
def print_abc_number(a,c,b=5):#默认参数全部在最后写出
    print(a,c,b)
print_abc_number(4,6,5)#4 6 5


#可变参数
def t1(*param):#*的作用
    print(param)#(1, 2, 3, 4, 5, 6)
    print(type(param))#<class 'tuple'>
t1(1,2,3,4,5,6)
#等同于
def t1(param):
    print(param)
    print(type(param))
t1((1,2,3,4,5,6))

def t2(*param2):
    print(param2)
t2((1,2,3,4,5,6))#((1, 2, 3, 4, 5, 6),)
ab1=(1,2,3,4)
t2(ab1)#((1, 2, 3, 4),)
t2(*ab1)#(1, 2, 3, 4),*的作用

def t3(param4,param5=2,*param6):#必须参数,默认参数,可变参数
    print(param4,param5,param6)
t3('a',1,2,3)#a 1 (2, 3),不可行
#颠倒一下
def t3(param4,*param5,param6=2):#必须参数,可变参数,默认参数
    print(param4,param5,param6)
t3('a',1,2,3)#a (1, 2, 3) 2
t3('a',1,2,3,4,'param')#a (1, 2, 3, 4, 'param') 2
t3('a',1,2,3,4,param6='param')#a (1, 2, 3, 4) param

def squsum(*param):#求平方和
    sum1=0
    for i in param:
        sum1+=i*i
    print(sum1)
squsum(1,2,3)#14
squsum(*[1,2,3,4])#30


#任意个数的关键字参数
def city_temp(**param):
    print(param)
    print(type(param))
city_temp(shenzhen='31c',chengdu='30c',chongqing='40c')
#{'shenzhen': '31c', 'chengdu': '30c', 'chongqing': '40c'}
#<class 'dict'>

def city_temp(**param):
    for key,value in param:
        print(key,':',value)
city_temp(shenzhen='31c',chengdu='30c',chongqing='40c')
#ValueError: too many values to unpack (expected 2)

def city_temp(**param):
    for key,value in param.items():
        print(key,':',value)
city_temp(shenzhen='31c',chengdu='30c',chongqing='40c')
#shenzhen : 31c
#chengdu : 30c
#chongqing : 40c

def city_temp(**param):
    for key,value in param.items():
        print(key,':',value)
a={'shenzhen':'31c','chengdu':'30c','chongqing':'40c'}
city_temp(**a)
#shenzhen : 31c
#chengdu : 30c
#chongqing : 40c

def city_temp(param1,**param):
    print(param1,param)
city_temp(1)#1 {}

3.变量作用域

a=10
def add(x,y):
    a=x+y
    print(a)
add(1,2)#3
print(a)#10

def demo():
    p=10##############局部变量(相对概念)
print(p)#NameError: name 'p' is not defined

n=11##################全局变量
def demo():
    print(n)
demo()#11

def demo():
    c=30
    for i in range(0,9):
        g='g'
        c+=1
    print(g,c)
demo()#g 39局部变量具有相对性
#块级作用域
#在python里面一个for循环没有形成一个作用域,函数形成了一个作用域

d=1
def func1():
    d=2
    def func2():
        d=3
        print(d)
    func2()
func1()#3

d=1
def func1():
    d=2
    def func2():
        print(d)
    func2()
func1()#2

d=1
def func1():
    def func2():
        print(d)
    func2()
func1()#1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值