python日常练习(七)

爱⌒轻易说出口 提交于 2019-11-28 05:06:25
# 1. 写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回。
def sum_add(*args):
    sum = 0
    for l in args:
        try:
            sum +=l
        except TypeError: #捕捉异常 如果是其他类型相加会报错 直接不执行 继续循环
            pass
    return sum

s = sum_add(1,'3',2)


# 2. 看代码写结果
# def func():
#     return 1,2,3
# val = func()
print( type(val) == tuple )
print( type(val) == list )
"""
1.返回一个元组 val=(1,2,3)
2.True
3.False
"""

# 3. 看代码写结果
#    def func(*args,**kwargs):
#        pass   
#    # a. 请将执行函数,并实现让args的值为 (1,2,3,4)
# def func(*args,**kwargs):
#     return args
# print(func(1,2,3,4))

#    # b. 请将执行函数,并实现让args的值为 ([1,2,3,4],[11,22,33])
def func(*args,**kwargs):
    return args
print(func([1,2,3,4],[11,22,33]))
#    # c. 请将执行函数,并实现让args的值为 ([11,22],33) 且 kwargs的值为{'k1':'v1','k2':'v2'}
def func(*args,**kwargs):
    return args,kwargs
print(func([11,22],33,k1='v1',k2='v2'))



#    # d. 如执行 func(*{'武沛齐','金鑫','女神'}),请问 args和kwargs的值分别是?
"""
args = ('武沛齐','金鑫','女神')
kwargs = None {}
"""
def func(*args,**kwargs):
    return args,kwargs
print(func(*{'武沛齐','金鑫','女神'}))

#    # e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33]),请问 args和kwargs的值分别是?
"""
args = ({'武沛齐','金鑫','女神'},[11,22,33])
kwargs = {} None
"""
def func(*args,**kwargs):
    return args,kwargs
a,b= func({'武沛齐','金鑫','女神'},[11,22,33])
print(a)
print(b)

#    # f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'}),请问 args和kwargs的值分别是?
"""
args = (('武沛齐','金鑫','女神'),[[11,22,33]])
kwargs = {'k1':'栈'}
"""
def func(*args,**kwargs):
    return args,kwargs
a,b = func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'})
print(a)
print(b)



# 4. 看代码写结果
#    def func(name,age=19,email='123@qq.com'):
#        pass 
#    # a. 执行 func('alex') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
可以执行
name = 'alex'
age =19
email = '123@qq.com'
"""
#    # b. 执行 func('alex',20) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
可以执行
name = 'alex'
age =20
email = '123@qq.com'
"""
#    # c. 执行 func('alex',20,30) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
可以执行
name = 'alex'
age =20
email = 30
"""


#    # d. 执行 func('alex',email='x@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
可以执行
name = 'alex'
age =19
email = 'x@qq.com'
"""


#    # e. 执行 func('alex',email='x@qq.com',age=99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
可以执行
name = 'alex'
age =99
email = 'x@qq.com'
"""
#    # f. 执行 func(name='alex',99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
不行,位置参数必须第一个 报错:SyntaxError: positional argument follows keyword argument
"""
#    # g. 执行 func(name='alex',99,'111@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
"""
不行,位置参数必须第一个 报错:SyntaxError: positional argument follows keyword argument
"""


# 5. 看代码写结果
#    def func(users,name):
#    	users.append(name)
#       return users 
#    result = func(['武沛齐','李杰'],'alex')
#    print(result)
"""
result = ['武沛齐','李杰','alex']
"""

# 6. 看代码写结果
#    def func(v1):
#        return v1* 2   
#    def bar(arg):
#        return "%s 是什么玩意?" %(arg,)   
#    val = func('你')
#    data = bar(val)
#    print(data)
"""
'你你 是什么玩意?'
"""

# 7. 看代码写结果
#    def func(v1):
#        return v1* 2
#    def bar(arg):
#        msg = "%s 是什么玩意?" %(arg,)
#        print(msg)    
#    val = func('你')
#    data = bar(val)
#    print(data)
"""
'你你 是什么玩意?'
None
"""


# 8.  看代码写结果

#    v1 = '武沛齐'
   
#    def func():
#        print(v1)
       
#    func()
#    v1 = '老男人'
#    func()
"""
'武沛齐'
'老男人'
"""



# 9. 看代码写结果
#    v1 = '武沛齐' 
#    def func():
#        v1 = '景女神'
#        def inner():
#            print(v1)
#        v1 = '肖大侠'
#        inner()
#    func()
#    v1 = '老男人'
#    func()
"""
'肖大侠'
'肖大侠'
原因:
1、函数外的v1 是全局变量,在全局作用域中
2.函数内的v1 是局部变量,在局部作用域中
3.函数内又嵌套了函数inner(),它内部定义print(v1),打印的变量的地址 是指向父级函数func中的v1,如果父级中没有此变量会继续向外调用,直到没找到报错。
4.在func函数里调用了inner()函数,在调用之前v1又重新赋值了,由'景女神'变成了肖大侠
5.在全局作用域中,经过了2次调用函数func()。结果都为'肖大侠''肖大侠'
"""


# 10. 看代码写结果【可选】
#     def func():
#         data = 2*2
#         return data    
#     new_name = func
#     val = new_name()
#     print(val)   
#     # 注意:函数类似于变量,func代指一块代码的内存地址。
"""
4
"""


# 11. 看代码写结果【可选】

#     def func():
#         data = 2*2
#         return data
    
#     data_list = [func,func,func]
#     for item in data_list:
#         v = item()
#         print(v)
   
#     # 注意:函数类似于变量,func代指一块代码的内存地址。
"""
4
4
4
原因:
1.列表中 存储的都是函数func的内存地址
2.当循环开始时,依次把func内存地址又指向给了item.
3.item相当于函数func,所以它可以指向调用 并 返回值给v
4.结果循环了3次 并打印了3次4
"""

# 12. 看代码写结果(函数可以做参数进行传递)【可选】
#     def func(arg):
#         arg()        
#     def show():
#         print('show函数')
    
#     func(show)
"""
show函数
原因:
我们其实在func函数体中调用了函数show
"""

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!