北大陈斌-Python语言基础与应用D7代码组织:函数

1、代码组织:函数(def)
封装
容器是对数据的封装
函数是对语句的封装
类是对方法和属性的封装
函数:
代码段封装成函数复用(reuse)

定义函数与调用函数
定义函数:
用def语句创建一个函数
用return关键字指定函数返回值
def <函数名> (<参数表>):
<功能代码段>
return <函数返回值>
调用函数:
<函数名>(<参数>)
无返回值:<函数名>(<参数表>)
返回值赋值:v = <函数名>(<参数表>)
在这里插入图片描述
变量的作用域
局部变量:
在函数内部定义的参数以及变量
只在该函数定义范围内有效,函数外边无法访问到
全局变量:
在函数外部定义,作用域是整个代码段

在函数内部使用与全局变量同名的变量时,如果未在函数内进行定义,则使用全局变量的值;
一旦在函数内部进行定义,Python会在函数内部创建一个局部变量,与全局变量就不相关了;

global关键字
global关键字可以在函数中改变全局变量的值,在函数中指明变量就是全局变量,如global num1, num2;

函数小技巧
map()函数
例如:所有数据乘以3;所有字符串转换为整数;两个列表对应值相加
map(func, list1, list2…)
函数func有几个函数,后面跟几个列表

匿名函数lambda
函数名称不重要,函数只用一次
lambda表达式返回一个匿名函数
lambda <参数表>:<表达式>
在这里插入图片描述
2、代码组织:函数的参数
形式参数和实际参数
形式参数:
函数创建和定义过程中,函数名后面括号里的参数
实际参数:
在调用过程中传入的参数

定义形式参数
固定参数:在参数表中写明参数名key的参数,固定了顺序和数量的固定参数;
可变参数:定义时还不知道有多少参数传入的可变参数,如print()
定义时:
def func(*args):#不带key的多个参数
def func(**kwargs): #key = val形式的多个参数
可变参数调用:
*agrs
在这里插入图片描述

**kwargs
在这里插入图片描述

调用函数的参数
可以传进两种参数
没有名字的位置参数,带key的关键字参数,指明了key,可以不按照顺序对应
如果混用,所有位置参数必须在前,关键字参数必须在后

3、上机练习:创建并调用函数
水仙花数的判定,输入n>=100的数,返回true和false;

n = int(input('请输入一个大于等于100的数:'))
str1 = str(n)
len1 = len(str1)
m = len1
s = 0
while m > 0:
    s = s + int(str1[0:1]) ** len1
    str1 = str1[1::]
    m = len(str1)
if s == n:
    print('true')
else:
    print('false')

创建一个函数,接受一个参数max(max>=1000),调用编写的水仙花判断函数,求100到max之间的水仙花数,返回列表

def nflower(n):
#    n = int(input('请输入一个大于等于100的数:'))
    str1 = str(n)
    len1 = len(str1)
    m = len1
    s = 0
    while m > 0:
        s = s + int(str1[0:1]) ** len1
        str1 = str1[1::]
        m = len(str1)
    if s == n:
        return('true')
    else:
        return('false')


max = int(input('请输入一个参数max(max>=1000):'))
alist = []
for i in range(100, max):
    isnf = nflower(i)
    if isnf == 'true':
        alist.append(i)
print(alist)


请输入一个参数max(max>=1000)10000
[153, 370, 371, 407, 1634, 8208, 9474]

求字符集合的并集,创建一个函数,接受两个字符串作为参数,返回两个字符串字符集合的并集,如:接受的两个字符串为“abc”和“bcd”,返回set([‘a’, ‘b’, ‘c’, ‘d’])

def cset(str1, str2):
    set1 = set(str1)
    set2 = set(str2)
    set3 = set1 | set2
    return set3

cstr1 = input('请输入第一个字符串:')
cstr2 = input('请输入第二个字符串:')
myset = cset(cstr1, cstr2)
print(myset)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值