[python全栈]02.python基础[part II](3)

目录

  1. return语句
  2. 函数的参数传递
  3. 函数的缺省参数
  4. 形参定义方式
  5. 不定长参数

1. return语句

return 语句
语法 : return [表达式]
			[...]	可以省略
作用 :
	用于函数中,结束当前函数的执行,返回到调用该函数的地方
	同时返回一个对象的引用关系
说明 :
	1.return语句后跟的表达式可以省略,省略后相当于return None
	2.如果函数没有return语句,则函数执行完最后一条语句后返回None
		(相当于自动在最后加了一条 return None)
	3.函数调用一定会返回一个对象的引用

eg:

#定义一个函数 input_number()
#此函数用来获取用户循环输入的整数,输入负数时结束
def input_number():
    L = []
    while True :
        a = int(input('请输入整数,输入负数结束 :'))
        if a < 0 :
            return L
        else :
            L.append(a)
L = input_number()
print(L)

2. 函数的参数传递

python 函数的参数传递 :
传递方式 :
	位置传递:	
		序列传参
	关键字传参:	
		字典关键字传参
***位置传参***
	实际参数(实参)的对应关系与形式参数(形参)的对应关系是按位置来依次对应的
	说明:实际参数和形式参数通过位置进行传递匹配,实参个数必须与形参个数相同
	eg :#位置传参
		def myfun(a,b,c) :
			print('a绑定',a,end = ' ')
			print('b绑定',b,end = ' ')
			print('c绑定',c,end = ' ')
		myfun(1,2,3)	#>>>a绑定 1 b绑定 2 c绑定 3 
***序列传参***
	序列传参是指在函数调用过程中,用*将序列拆解后按位置传参的方式进行参数传递
	eg:#序列传参
		def myfun(a,b,c) :
			print('a绑定',a,end = ' ')
			print('b绑定',b,end = ' ')
			print('c绑定',c,end = ' ')
		s = [1,2,3]
		myfun(*s)	# * 表示把s拆开
		s2 = 'ABC'
		myfun(*s2)	
***关键字传参***
	关键字传参是指传参时,按着形参的名称给形参赋值
		实参和形参按名称进行匹配
	eg:#关键字传参方式
		def myfun(a,b,c):
			print('a绑定',a,end = ' ')
			print('b绑定',b,end = ' ')
			print('c绑定',c,end = ' ')
		myfun(b=22,a=11,c=33)	#同 myfun(11,22,33)
	说明:实参和形参可以不按位置匹配
***字典关键字传参***
	是指实参为字典,将字典用 ** 拆解后进行关键字传参
	eg:#字典关键字传参
		def myfun(a,b,c):
			print('a绑定',a,end = ' ')
			print('b绑定',b,end = ' ')
			print('c绑定',c,end = ' ')
		d = {'c':33, 'b':22, 'a':11}
		myfun(**d)	#同 myfun(11,22,33)
	说明:
		1.字典的键名和形参名必须一致
		2.字典键名必须为字符串
		3.字典的键名要在形参中存在
函数的综合传参
	函数传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合
	eg :#综合传参
		def myfun(a,b,c):
			print('a绑定',a,end = ' ')
			print('b绑定',b,end = ' ')
			print('c绑定',c,end = ' ')
		myfun(1,*[2,3])
		myfun(**{'b':2,'c':3},a=1)
	说明:先位置传参,后关键字传参

3. 函数的缺省参数

函数的形参(如何接受实参)
函数的缺省参数 :
	语法 :
		def 函数名(形参名1 = 默认参数1,
							形参名2 = 默认参数2,...) :
			...
	说明 :
		1.缺省参数必须从右至左依次存在,
			如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数
		2.缺省参数可以有0个或多个,甚至全部都有缺省参数
			
	 eg:#以下失意函数的缺省参数
	 	def info(name,age = 1,address = '未填写'):	
	 		print(name,'今年',age,'岁,家庭地址是 :',address)
	 	info('LiMing',15)	
	 	#>>>LiMing 今年 15 岁,家庭地址是 : 未填写
	 	info('小张',20,'北京市朝阳区')	
	 	#>>>小张 今年 20 岁,家庭地址是 : 北京市朝阳区
	 	info('小赵')	
	 	#>>>小赵 今年 1 岁,家庭地址是 : 未填写

4. 形参定义方式

函数的形参定义方式 :
	位置形参
	星号元组形参
	命名关键字形参
	双星号字典形参
***位置形参***
	语法:
		def 函数名(形参名1,形参名2,...)
			语句块...
***星号元组形参***
	语法:
		def 函数名(*元组形参名)
			语句块...
	作用:收集多余的位置参数
	说明:元组形参名通常用 :'args'
	eg:
	def func(*args):
		print('参数个数是:' , len(args))
		print('args = ' ,args )
	func(1,2,3,4)
	func('hello','world',1,2,3,4)
***命名关键字形参***
	语法:
		def 函数名(*,命名关键字形参):
			语句块...
		def 函数名(*args,命名关键字形参):
			语句块...
		说明:所有的参数都必须用关键字传参或字典关键字传参传递
		eg:
		def fn(*,d,e):
			print('d = ' d)
			print('e = ' e)
		fn(d=100, e=200)	#合法调用
		fn(1,2)	#不合法,不能使用位置传参
***双星号字典形参***
	语法:
		def 函数名(**字典形参名) :
			语句块...
	作用 :收集多余的关键字传参
	说明 :通常字典形参名定位 :'kwargs'
	eg:
		def func(**kwargs):
			print('关键字参数个数是:',len(kwargs))
			print('kwargs = ',kwargs)
		func(name = 'A',age = 15)
		#>>>关键字参数个数是: 2
		#>>>kwargs =  {'name': 'A', 'age': 15}
函数的参数说明 :
	缺省参数,位置形参,星号元组形参,命名关键字形参和双星号字典形参可以混合使用
函数参数自左至右的顺序为:
	位置形参
	星号元组形参
	命名关键字形参
	双星号字典形参
eg :
	def f1(a,b,*args,c,**kwargs):
		print(a)
		print(b)
		print(args)
		print(c)
		print(kwargs)
	f1(1, 2, 3, 4, d=6, c=5 ,e=7)	#
	f1(*'hello', d=6, **{'c':5, 'e':7})

5. 不定长参数

函数的不定长参数 :
	def fn(*args, **kwargs) :
		print(args)
		print(kwargs)
	fn()
	fn(1,2,3,4)
	fn(1,2,3,4,a=5,b=6,c=7)
	#可以接收任意的位置传参和关键字传参
eg:模仿range函数构造myrange()函数 (step为正的情况)
def myrange(start, stop=None, step=1):
    if stop is None :
        stop = start
        start = 0
    L = []
    i = start
    while i < stop :
        L.append(i)
        i += step
    return L
L = myrange(3)
print(L)	#>>>[0, 1, 2]
L = myrange(3,6)
print(L)	#>>>[3, 4, 5]
L = myrange(1,10,3)
print(L)	#>>>[1, 4, 7]

练习 :

# 写一个函数myfun, 此函数用显示两个参数的相关信息
#   此函数给定两个参数,打印关于两个参数的信息:
#       1) 打印两个参数的最大值
#       2) 打印两个参数的和
#       3) 打印两个参数的积(相乘)
#       4) 打印从a开始到b结束的所有偶数:
def myfun(a,b):
    max = a if a>b else b
    L = []
    for i in range(a,b+1):
        if i % 2 == 0 :
            L.append(i)
    print('最大值是: ',max)
    print('和是: ',a+b)
    print('积是: ',a*b)
    print(a,'到%d之间的偶数有:' % b, L)
# 完全数是指出自身以外,所有因数相加之和等于自身的数
# 如  1+2+3 = 6 ;1,2,3都是6的因数
def perfect_number():
    i = 1
    n = 0
    while n<4 :
        L = []
        for j in range(1,i):
            if i % j == 0:
                L.append(j)
        if sum(L) == i:
            print(i,'是一个完全数')
            i += 1
            n += 1
        else :
            i += 1
perfect_number()
	
1. 素数prime函数练习
      1)  写一个函数isprime(x)  判断x是否为素数,如果是素数,返回True,否则返回False
      2) 写一个函数prime_m2n(m, n), 返回从m开始到n结束(不包含n)的范围内的素数列表
        如:
          L = prime_m2n(1, 10)
          print(L) # [2,3,5,7]
      3) 写一个函数primes(n), 返回指定范围内素数(不包含n)的全部素数的列表,并打印这些素数
        如:
          L = prime(20)
          print(L)  # [2,3,5,7,11,13,17,19]
        1) 打印 100以内的全部素数
        2) 打印 100以内全部素数的
 
def isprime(n): #判断是否为素数
        a=0
        if n < 2 :
                return False 
        for i in range(2,n):
                if n%i==0 :
                        a+=1
        if a > 0 :
                return False
        return True


def prime_m2n(m, n): #返回[m,n)之间的素数列表
        L = []
        for i in range(m,n):
                if isprime(i) :
                        L.append(i)
        return L

def primes(n):
        L = []
        for i in range(2,n):
                if isprime(i) :
                        L.append(i)
        return L


L = primes(100)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值