Python学习笔记4-函数+lambda表达式

本文详细介绍了Python中的函数定义与使用,包括函数的定义、调用、参数类型(默认参数、关键字参数、可变参数)以及局部变量与全局变量的区别。此外,还探讨了lambda表达式的使用场景和注意事项,强调了在适当情况下使用lambda表达式可以简化代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数 函数:

程序中可重复使用的程序段 给一段程序起一个名字,用这个名字来执行一段程序,反复使用 (调用函数)

用关键字 ‘def' 来定义,identifier(参数)

 identifier

 参数 list

 return statement

 局部变量 vs 全局变量 

第一:如定义在类或者函数体外,在函数或者类中引用需要用到 global声明
temp_t = "ceshi"
def  tmp1():
    global temp_t
    temp_t =1
print temp_t 

结果:1

第二:直接在函数或类中定义,需要先执行函数或者类,才能执行输出
def a():
    global cc
    cc = "bb"
def b():
    global cc
    cc = "kk"
a()
b()
print(cc)

结果:kk

#没有参数和返回的函数

# def say_hi():
#       print(" hi!")
# say_hi()
# say_hi() #

#有参数,无返回值

# def print_sum_two(a, b):
#     c = a + b
#     print(c)
#
# print_sum_two(3, 6)


# def hello_some(str):
#     print("hello " + str + "!")
#
# hello_some("China")
# hello_some("Python")

#有参数,有返回值

# def repeat_str(str, times):
#     repeated_strs = str * times
#     return repeated_strs
#
# repeated_strings = repeat_str("Happy Birthday!", 4)
# print(repeated_strings)

4.2part2_函数

 默认参数

 关键字参数

 VarArgs 参数 Code:

#-*- coding: utf-8 -*-

# 1.默认参数,且默认值参数一定在最右端

def repeat_str(s, times = 1):
    repeated_strs = s * times 
    return repeated_strs 
repeated_strings = repeat_str("Happy Birthday!") 
print(repeated_strings) 
repeated_strings_2 = repeat_str("Happy Birthday!" , 4) 
print(repeated_strings_2) 
#不能在有默认参数后面跟随没有默认参数
#f(a, b =2)合法 
#f(a = 2, b)非法 

#2.关键字参数: 指的是调用时候的参数传递形式,可以按参数名字指定值

def func(a, b = 4, c = 8): 
      print('a is', a, 'and b is', b, 'and c is', c) 
func(13, 17) 
func(125, c = 24)
func(c = 40, a = 80) 

#3.VarArgs 参数(重要)

#*参数和**参数,前者用来接收任意多个实参并将其放在一个元祖中

#**用来接收字典类型的参数

def print_paras(fpara, *nums, **words): 
       print("fpara: " + str(fpara)) 
       print("nums: " + str(nums)) 
       print("words: " + str(words)) 
       print_paras("hello", 1, 3, 5, 7, word = "python", anohter_word = "java") 

4.3 函数补充内容

3.5(补充)函数中需要注意的事项

#-*-coding:utf8-*- #函数中需要注意的事项

#1.默认值参数,且默认值参数一定在最右端

def say(mess,times=1): 
      print (mess+' ')*times 
print say.func_defaults #查看函数所有默认值参数的当前值 
say('hello') 
say('hello',3) 

#2.关键参数:指的是调用时候的参数传递形式,可以按参数名字指定值

def demo(a,b,c=5): 
       print a,b,c 
print demo(3,7)
print demo(a=7,b=3,c=6) 
print demo(a=8,b=9,c=0) 

#3.可变长参数

#*参数和**参数,前者用来接收任意多个实参并将其放在一个元祖中

#**用来接收字典类型的参数

def demo1(*p):
    print p
demo1(1,2,3)
demo1(1,2,3,34)

def demo2(**p):
for item in p.items(): 
    print item 
demo2(x=1,y=2,z=3) #key 和 value 形式 

#4.传递参数时的序列解包

def demo3(a,b,c):
    print a+b+c

seq=[1,2,3]
demo3(*seq)

tup=(1,2,3)
demo3(*tup)
dict={1:'a',2:'b',3:'c'}

#字典对象作为实参时默认使用字典的键,

#如果需要将字典中键值元素作为参数则需要使用 items()方法明确说明,

# 如果单独取出“值”需要调用字典的 values()方法说明

demo3(*dict)
demo3(*dict.items())
set={1,2,3}
demo(*set) 
demo3(*dict.values()) 

(重点知识)

#5.lambda 表达式--声明匿名函数(没有函数名字的临时使用的小函数)

#lambda 表达式只可以使用一个表达式,不允许包含其他复杂语句,但是在表达式中可以调 用其他函数

#并支持默认值参数和关键参数,该表达式的计算结果相当于函数的返回值

f=lambda x,y,z:x+y+z 
print f(1,2,3) 

g=lambda x,y=2,z=3:x+y+z #含有默认参数 
print g(1) 
print g(2,4,5) 
print g(2,y=4,z=5) #调用时使用关键参数 

L=[(lambda x:x**2),(lambda x:x**3),(lambda x:x**4)] 
print L[0](2),L[1](2),L[2](2) 

L=[1,2,3,4,5] 
print map((lambda x:x+10),L) #没有名字的 lambda 表达式作为函数参数 
print map((lambda x,y,z:x*y*z),[1,2,3],[1,2,3],[1,2,3]) 

#lambda 使用自定义函数(平方)

def demo4(n):
       return n*n 
demo4(5) 
a_list=[1,2,3,4,5] 
map(lambda x:demo4(x),a_list) 

#非重点掌握

data=list(range(20)) 
print data 
import random 
random.shuffle(data)
print data 
data.sort(key=lambda x:x) 
print data 
data.sort(key=lambda x:len(str(x))) #使用 lambda 表达式指定排序规则 
print data
data.sort(key=lambda x:len(str(x)),reverse=True) 
print data

4.4 lambda 表达式 语法;

函数名=lambda 参数:表达式

代码:

#1 g=lambda x,y:x+y print(g(4,5))

#2.带默认参数的 lambda 表达式 g1=lambda x,y=0,z=0:x+y+z        print(g(5))

#3.直接使用 lambda 表达式 (lambda x,y=0,z=0:x+y+z)(4,5,6)

使用建议:

当函数非常简单,只有一个表达式的时候,可以考虑 lambda 表达式,否则建议用普通函数

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值