新手学习Python第七天-新手笔记

07:45达到实验室,已经把昨天的内容复习完了,开始现在的学习

————08:00——————

1.函数的返回值

if i % 2:    非零值被视为真(True),而零值被视为假(False)

——刚才导师来了。聊了比较久。老师可以为我的课题研究方向买ROS小车了。太开心了!!!

呜呜呜~~~一定要好好学习,多发文章,不负老师希望。——08:43开始学习

写一下奇偶数分类的的代码,理解这个返回值

def fun(num):
    odd=[]
    even=[]
    for i in num:
        if i%2:
            odd.append(i)
        else:
            odd.append(i)
    return odd,even
lst=[22,44,55,12,17]
a=fun(lst)
print(a)

——老师找我们开个组会——  08:52

函数的返回值:

1.若函数没有返回值(函数执行完毕之后,不需要给调用数据), return可不写。

2.函数的返回值,若是1个,直接返回原值

3.函数的返回值若是多个,返回的结果为元组

这里我写一下三种情况:

1.第一种情况的:

def fun1():
    print('hello')    看到没有,执行就完事了,不需要有返回值,就能直接出结果的这种
fun1()

2.第二种情况:

def fun2():
    return('hello')       #直接像print那样直接出结果 所以就直接返回原值

b=fun2()
print(b)

————刚刚干完活现在15:49————

3.第三种情况:

def fun():     #先定义一个函数为fun(),记得加:
    return 'hello','world'    #返回的是多个值

s=fun()          
print(s)    #结果为元组的形式

总结一下:我是这样来理解的就是如果你对于让定义的函数直接显示出来的话,那么直接就不用返回值;返回值在写的时候是return,需要用print(),出来,如果是print(),没有return,那么你可以直接写函数,运行就会显示出来。

再来个综合吧:

def fun():
    print('hello')
fun()               #第一种情况 不要return

def  fun1():
    return('hello')
print(fun1())         #第二种情况,对于单个值而言返回原类型。
def fun2():
    return('hello','world')
a=fun2()
print(a)        #第三种情况,对于返回多个值而言,返回的是元组。

2.函数的参数定义

函数定义默认值参数,有两种情况,第一种

def fun(a,b=10):
    print(a,b)

fun(100)        #只有一个参数,默认把值给第一个。
fun(20,30)      #这里的20给第一个,30给第二个参数。将10代替。

2.1个数可变的位置参数:

1.无法事先确定传递的位置实参的个数时,使用可变的位置参数

例如:

def fun(*args):   #函数定义时,可变的位置参数
    print(args)

fun(10)   
fun(10,30)
fun(10,30,40)    #按照顺序传

利用索引位置

2. 使用*定义个数可变的位置形参

3.结果为一个元组

2.2 可变的关键字形参

1.无法事先确定传递的关键字实参的个数时,使用可变的位置参数

2. 使用**定义个数可变的关键字形参

3.结果为字典

例如:

def fun1(**args):
    print(args)
fun1(a=10,b=20,c=30)  
fun1(f=60)    

可以知道使用**确定的是关键字位置,结果输出为字典。

还有一点需要注意的是:

print('hello', end='\t')  # 打印 'hello' 后跟一个制表符
print('world')  # 打印 'world',并在末尾添加换行符

这里要用‘end=’就可以了  。

报错情况:

def fun(*args,*agrs):        #个数可变的位置参数
    pass
def fun (**agrs,**args):     #个数可变的形式参数
    passg

个数可变的位置参数以及个数可变的关键字参数。都只能是一个,超过一个就会报错。

2.3 都有的情况:

def fun1(*args,**agrs):
    pass
def fun2(**args,**args):
    pass

注意:若既要含有位置形参还有关键字形参,那么要把个数可变的位置形参放在个数可变的关键字形参前面

2.4函数的参数总结:

2.4.1 位置参数:

def fun(a,b,c):
    print(a,end='\t')
    print(b,end='\t')
    print(c,end='\t')
fun(80,90,50)

这就是位置形参。

2.4.2 看下列表的:

def fun(a,b,c):
    print(a,end='\t')
    print(b,end='\t')
    print(c,end='\t')
fun(80,90,50)
lst=[20,30,40]
a=fun(*lst)

列表如果直接输出,那么会报错。因为它这个里面是三个元素,而列表是一个整体为一个元素。

需要在列表函数定义的名字前面+* 就可以了。

2.4.3 看下字典的

def fun(a,b,c):
    print(a,end='\t')
    print(b,end='\t')
    print(c,end='\t')
dict ={'a':100,'b':200,'c':300}
v=fun(**dict)

与列表相同,在字典定义的函数名字前面加*,但是两个**

2.5函数参数的各类总结

2.5.1  默认值形参

def fun1(a,b=10):
    print(a,b)

fun1(10,20) 10给a,20给b

2.5.2 个数可变的位置形参

def fun2(*args):
    print(agrs)     

有一个*记住

2.5.3 个数可变的关键字形参

def fun3 (**args):
    print(args)

2.5.4 位置实际传参:

fun2(10,30,40,50)

2.5.5 关键字实参传递:

fun3(a=10,b=20,c=30)

2.5.6 混合参数传递:

def fun4(a,b,c,d):
    print(a)
    print(b)
    print(c)
    print(d)   
fun4(a=10,b=20,c=30,d=40)   关键字实参
fun4(10,20,30,40)           位置实参
fun4(10,20,c=30,d=40)    前面位置实参+后面的关键字实参
fun4(10,20,c=30,d=40)     
def fun4(a,b,* ,c,d):   加入*号之后,这些函数在调用的时候,只能采用关键字参数传递,我们把这个*就叫做关键字形参
    print(a)
    print(b)
    print(c)
    print(d)

fun4(10,20,c=30,d=40)    

函数定义时的形参的顺序问题

def fun1(a,b,*,c,d,**args):    
    pass
def fun2(*args,**args):
    pass
def fun3(a,b=10,**args):
    pass

以上这三种情况都是可以的, 都把关键字形参放入后面。

3.变量的作用域:

3.1关于局部变量

举个例子:

def fun(a,b):
    c=a+b         
    return(c)

我们看下这个c就被称为局部变量,因为c是在函数体内进行定义的变量,a与b为函数的形参,作用范围也是函数内部,相当于局部变量。

3.2 作用域

def fun(a,b):
    c=a+b
    return(c)
print(a)
print(c)

这样就会报错,因为abc是局部变量,一个是在函数体一个是在fun(),都在他们内部进行,进行完作用效果也就消失了,所以你再去用它的话会报错,需要重新定义变量激活它。即超出了作用域

3.3 全局变量

name ='孙老师'
def fun():
    print(name)
fun()  

这个name变量在外面,所以就是全局变量,都可以用它。

def fun():
    age=20           函数体
    print(age)
fun()              使用这个函数,就会执行函数体显示20出来
fun(age)          但这个age属于局部变量,运行就会报错

所以要弄一下全局变量 怎么实现呢?

只需要在函数体中的那个定义类变量前面+一个”global"

def fun():
     global age
     age=20
     print(age)
fun()
print(age)

局部变量使用golobal声明那就是全局变量了。

总结:21:32   还差30节课学完 明天继续加油!

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值