python学习第七天

函数

什么是函数

  • 函数代码块以 def 关键词开头,后接函数标识符名称和括号()。
  • 任何传入参数和自变量必须放在括号中间。括号之间可以用于定义参数
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
  • 函数内容以冒号起始,并且缩进
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None,例:
def Myname(name):
	"函数-我的名字“
	print(name)
	return

调用函数

def Myname(name):
    "函数-我的名字"
    print(name)
    return
Myname("小明")               #小明
name1 =  Myname("小花")      #小花
print(name1)                 # None
print(Myname.__doc__)        #函数-我的名字,__doc__是函数的文档

函数参数

以下是调用函数时可使用的正式参数类型:

  • 必备参数 : 须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
  • 关键字参数 :关键字参数允许函数调用时参数的顺序与声明时不一致
  • 默认参数 : 调用函数时,默认参数的值如果没有传入,则被认为是默认值
  • 不定长参数 :一个函数能处理比当初声明时更多的参数

必备参数:

def People(name,age):
    print("My name is {0} and age is {1}".format(name,age))
    return

People("xiaoming",18)       # My name is xiaoming and age is 18 ,name和age按照顺序输入

关键字参数:

def People(name,age):
    print("My name is {0} and age is {1}".format(name,age))
    return

People(age=18,name="xiaoming")       # My name is xiaoming and age is 18 ,name和age可以不按照顺序输入

默认参数:

def People(name,age=18):
    print("My name is {0} and age is {1}".format(name,age))
    return

People("xiaoming")       # My name is xiaoming and age is 18 ,age已经默认是18了,可以不用输入

不定长参数 :
*args - 可变参数,可以是从零个到任意个,自动组装成元组
**kw - 关键字参数,可以是从零个到任意个,自动组装成字典

def People(name,*args,**kw):
    print(name)
    print(args)
    print(kw)

People("xiaoming",30,40,50,a=1,b=2,c=3) 

输出结果为:

xiaoming
(30, 40, 50)
{'a': 1, 'b': 2, 'c': 3}

函数的返回值

def sumzhi(a,b):
    return a+b
sumzhi(10,20)     # 30

变量作用域

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
定义在函数内部的变量拥有局部作用域,该变量称为局部变量。
定义在函数外部的变量拥有全局作用域,该变量称为全局变量。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。

def sumzhi(dj,sl):
    je = dj * sl
    return je
dj1 = float(input("输出购买的单价:"))
sl1 = int(input("输出购买的数量:"))
je1 = sumzhi(dj1,sl1)
print("需要支付的金额为:%.2f"%je1)

输出结果为:

输出购买的单价:6
输出购买的数量:5
需要支付的金额为:30.00
  • 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
a = 0
def yz():
    global a
    print(a)     #0
    a=100
    print(a)     #100
yz()
print(a)         #100

Lambda 表达式

ython 使用 lambda 关键词来创建匿名函数,而非def关键词,它没有函数名,其语法结构如下:lambda argument_list: expression,例:

a= lambda x:x**2
print(a(10))  #100

匿名函数 常常应用于函数式编程的高阶函数 (high-order function)中,主要有两种形式:

  • 参数是函数 (filter, map)
  • 返回值是函数 (closure)
    filter(function, iterable) 过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换.
a= lambda x:x**2%2==0
b = filter(a,[1,2,3,4,5,6,7,8,9,10])
print(list(b))              #[2, 4, 6, 8, 10], 筛选出满足条件的值

map(function, *iterables) 根据提供的函数对指定序列做映射。

a= map(lambda x:x**2,[1,2,3,4,5])
print(list(a))              #[1, 4, 9, 16, 25]

学习地址为阿里天池的阿里天池龙珠计划python训练营,地址:https://tianchi.aliyun.com/s/bcfaedf7a7961e48effcc495bd5ee9d0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值