python之道10

  1. 写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回。

    答案

    def func(*args):
     count = 0
     for i in args:
         count += i
     return count
    print(func(1,2,3,4))
    
    # 输出结果
    10
  2. 看代码写结果

    def func():
        return 1,2,3
    
    val = func()
    print( type(val) == tuple )
    print( type(val) == list )

    答案

    True
    Flase
    # 知识点,ruturn后面接多个值返回的是一个元组
  3. 看代码写结果

    def func(*args,**kwargs):
        pass
    
    # a. 请将执行函数,并实现让args的值为 (1,2,3,4)
    # b. 请将执行函数,并实现让args的值为 ([1,2,3,4],[11,22,33])
    # c. 请将执行函数,并实现让args的值为 ([11,22],33) 且 kwargs的值为{'k1':'v1','k2':'v2'}
    # d. 如执行 func(*{'武沛齐','金鑫','女神'}),请问 args和kwargs的值分别是?
    # e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33]),请问 args和kwargs的值分别是?
    # f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'}),请问 args和kwargs的值分别是?

    答案

    a.
    def func(*args,**kwargs):
        return args
    print(func(1,2,3,4))
    # 结果
    (1, 2, 3, 4)
    
    b.
    def func(*args,**kwargs):
        return args
    ret = func([1,2,3,4],[11,22,33])
    print(ret)
    # 结果
    ([1, 2, 3, 4], [11, 22, 33])
    
    c.
    def func(*args,**kwargs):
        return args,kwargs
    ret = func([11,22],33,k1='v1',k2='v2')
    print(ret)
    # 结果
    (([11, 22], 33), {'k1': 'v1', 'k2': 'v2'})
    
    d.
    args:('武沛齐','金鑫','女神')
    kwargs:{} # **kwargs什么都没有接收到
    
    e.
    args: ({'女神', '金鑫', '武沛齐'}, [11, 22, 33])
    kwargs: {}
    
    f.
    args:('武沛齐','金鑫','女神',[11,22,33])
    kwargs:{'k1':'栈'}
  4. 看代码写结果

    def func(name,age=19,email='[email protected]'):
        pass
    
    # a. 执行 func('alex') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # b. 执行 func('alex',20) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # c. 执行 func('alex',20,30) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # d. 执行 func('alex',email='[email protected]') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # e. 执行 func('alex',email='[email protected]',age=99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # f. 执行 func(name='alex',99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
    # g. 执行 func(name='alex',99,'[email protected]') ,判断是否可执行,如可以请问 name、age、email 的值分别是?

    答案

    a.
    可以执行
    alex 19 [email protected]
    
    b.
    可以执行
    alex 20 [email protected]
    
    c.
    可以执行
    alex 20 30
    
    d.
    可以执行
    alex 19 [email protected]
    
    e.
    可以执行
    alex 99 [email protected]
    
    f.
    不能执行
    关键字参数要在位置参数的后边
    
    g.
    不能执行
    关键字参数要在位置参数的后边
    
  5. 看代码写结果

    def func(users,name):
     users.append(name)
        return users
    
    result = func(['武沛齐','李杰'],'alex')
    print(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) 
         # 没有return返回为None
    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()
    

    答案

    肖大侠
    肖大侠
    
  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
    
  12. 看代码写结果(函数可以做参数进行传递)【可选】# 此题有异议

    def func(arg):
        arg()
    
    def show():
        print('show函数')
    
    func(show)
    

    答案

    show函数
    
  13. 写函数,接收n个数字,求这些参数数字的和。(动态传参)

    答案

    def func(*args)
        count = 0
        for i in args:
            count += i
        return count
    func(1,2,3,4,5,6)
    
    # 结果
    21
    
  14. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?

a=10
b=20
def test5(a,b):

    print(a,b)

c = test5(b,a)
print(c)

答案

a:20
b:10
c:None
  1. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
    a=3
    b=5
    print(a,b)
c = test5(b,a)
print(c)

答案

a:3
b:5
c:None
  1. 传入函数中多个列表和字典,如何将每个列表的每个元素依次添加到函数的动态参数args里面?如何将每个字典的所有键值对依次添加到kwargs里面?

答案

def func(*args,**kwargs)
    return args
ret = func(*[1,2,3,4],*['a','b','c'],**{'name':'alex','age':98})
print(ret)

  1. 写函数,接收两个数字参数,将较小的数字返回.

答案

def func(x,y): 
    return x if x > y else y
print(func(1,2))
# 结果 
2
  1. 写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.

例如 传入的可迭代对象为[1,'老男孩','武sir']返回的结果为’1_老男孩_武sir’

答案

19.有如下函数:

def wrapper():

    def inner():

        print(666)

 wrapper()

你可以任意添加代码,执行inner函数.

答案

def wrapper():

    def inner():

        print(666)
    inner()
wrapper(inner)
  1. 相关面试题:

写出下列代码结果:

def foo(a,b,*args,c,sex=None,**kwargs):

    print(a,b)

    print(c)

    print(sex)

    print(args)

    print(kwargs)



\# foo(1,2,3,4,c=6)

\# foo(1,2,sex='男',name='alex',hobby='old_woman')

\# foo(1,2,3,4,name='alex',sex='男')

\# foo(1,2,c=18)

\# foo(2, 3, [1, 2, 3],c=13,hobby='喝茶')

\# foo(*[1, 2, 3, 4],**{'name':'太白','c':12,'sex':'女'})

答案

1 2
6
(3,4)
None
{}

报错

报错

猜你喜欢

转载自www.cnblogs.com/zanao/p/11061752.html