函数

#coding=utf-8

"""

  • 函数:定义时的采参数 -形式参数

 

参数:

1、形式参数--形参

2、实际参数--实参

 

参数传递过程:实参传给形参

 

参数的定义类型:

  • 位置参数  传入的实参必须和形参一一对应

def func(a,b,c):

 

  • 2、关键字传参

 

  • 3、默认参数:需要放在后面定义,必须放在可变参数前面;

 

  • 4、可变参数:元组、字典   传入方式:1、直接传入 2、通过解包传入

1、直接传入:

元组:

>>> def func(a,*kwargs):

...     result = 0

...     result += a

...     for v in kwargs:

...         result += v

...     print(result)

...     print(type(kwargs))

...     print(kwargs)

...

>>> func(10,20,40,50)

120

<class 'tuple'>

(20, 40, 50)

>>> func(10)

10

<class 'tuple'>

()

字典:

>>> def func(a,**kwargs):

...     result = 0

...     result += a

...     for v in kwargs.values():

...         result += v

...     print(type(kwargs))

...     print(kwargs)

...     return result

...

>>> print(func(10,b=20,c=30))

<class 'dict'>

{'b': 20, 'c': 30}

60

 

2、通过解包传入

元组

>>> l=(1,2,3)

>>> def a(*b):

...     result = 0

...     for c in b:

...         result += c

...     return result

...

>>> a(*l)

6

字典:

>>> q = {"a":1,"b":2,"c":3}

>>> def t(**p):

...     result = 0

...     for d in p.values():

...         result += d

...     return result

...

>>> t(**q)

6

 

不可变数据类型:改变变量的值后,id值也会跟着变,已经不是原来的对象

 

可变数据类型:数字 字符串 元组,改变变量值后,id地址值不变,还是原来的对象

 

传参的类型:

  • 1、值传递:一般不可变数据类型 都是值传递
  • 2、引用传递:可变数据类型 都是引用传递

 

"""

"""

练习题:

练习1:

1.定义一个函数add(x,y),要求有个值result,并打印result;

 

 

def add(x,y):

    result = x +y

    return result

 

print(add(6,5))

练习2:

定义:位置参数、缺省参数、元组参数、字典参数,并求和;

def f(a,b,c,d=100,*arg,**kwargs):

     result = 0

     result += a

     result += b

     result += c

     result += d

     for v in arg:

         result += v

     for g in kwargs.values():

         result += g

     print(type(arg))

     print(type(kwargs))

     print(arg,kwargs)

     return result

 

print(f(1,2,3,40,60,e=50,r=60,t=70))

练习3:

3、函数参数传入5个字母,声明一个可变参数的函数,拼成一个单词;

#1

def a(a,b,c,*d):

     a = str(a)

     b = str(b)

     c = str(c)

     result = ""

     result = result + a

     result = result + b

     result = result + c

     for i in d:

         result += i

     return result

 

print(a("a","b","c","d","w"))

#2

def join_word(a,b,*args):

    res = []

    res.append(a)

    res.append(b)

    for c in args:

        res.append(c)

       

    return "".join(res)

   

print(join_word('w','o','r','l','d'))

 

练习4:

4、列表[1,2,3,4,5,6]每个值加2;

>>> l=[1,2,3,4,5,6]

>>> map(lambda x:x+2,l)

<map object at 0x0000025A41A545C0>

>>> list(map(lambda x:x+2,l))

[3, 4, 5, 6, 7, 8]

练习5

5、读入一组数字,然后把每组数字加1后暑促,比如”123“,输出234;

>>> int("".join(list(map(lambda x : str(int(x)  + 1)  ,"123"))))

234

"""

"""

知识点

实参没有传入,形参永远指向一个内存地址

def add_end(L=[]):

L.append('END')

return L

print (add_end([1, 2, 3])) #调用正常

print (add_end(['x', 'y', 'z'])) #调用正常

print (add_end())#调用正常

print (add_end())#调用不正常

print (add_end())#调用不正常

 

def add_end(L=None):

if L is None:

L = []

L.append('END')

return L

 

eval函数

>>> s = input("请输入:")

请输入:[1,2,3,4]

>>> s

'[1,2,3,4]'

>>> eval(s)

[1, 2, 3, 4]

 

文档字符串

def sum(a,b):

    '''主要用于两数相加,光荣之路公司出品'''

    return float(a) + float(b)

 

print(sum(10,5))

print(sum.__doc__)

 

D:\>py c.py

15.0

主要用于两数相加,光荣之路公司出品

 

python

Lamda 函数

代码示例1:

g = lambda x:x+1

print (g(1))

print (g(2))

结果显示:

2

3

代码示例2:

# -*- coding: UTF-8 -*-

g = lambda x, y, z : (x + y) ** z

print (g(1,2,3))

结果显示:

27

 

代码示例3:

def make_repeater(n):

    return lambda s: s*n

   

twice = make_repeater(2) #s: s*n = s: s*2

 

print (twice('word')) #s: s*2 = 'word'*2

#结果wordword

 

print (twice(5))      #s: s*2 =  5*2

#结果10

map函数

>>> def func(x):

...     return x+2

...

>>> l = [1,2,3]

>>> map(func,l)

<map object at 0x0000025A419A16D8>

>>> list(map(func,l))

[3, 4, 5]

执行过程:

[1,2,3]

1 + 2 = 3

2 + 2 = 4

3 + 2 = 5

list(3,4,5)

[3,4,5]

等同于

map+lambda

>>> l = [1,2,3]

>>> map(lambda x : x + 2,l)

<map object at 0x0000025A41A54588>

>>> list(map(lambda x : x + 2,l))

[3, 4, 5]

执行过程:

1 + 2 = 3

2 + 2 = 4

3 + 2 = 5

list(3,4,5)

[3,4,5]

>>> map(lambda x,y : x + y,[1,2,3],[3,2,1])

<map object at 0x000001C95748E438>

>>> list(map(lambda x,y : x + y,[1,2,3],[3,2,1]))

[4, 4, 4]

>>> list(map(lambda x,y : x + y,[1,2,3],[3,2]))

[4, 4]

>>> list(map(lambda x,y : x + y,[1,2,3],[3,2,1,10]))

[4, 4, 4]

 

六大剑客:lambda map fiter reduce 切片 推导列表

 

周三 列表、元组

"""

 

posted on 2021-11-21 21:31  Wgl123  阅读(44)  评论(0编辑  收藏  举报