Python基础知识(三)——函数

函数定义

函数的定义规则:

  • (1)函数代码块以def关键词开头,后接函数标识符名和圆括号()。
  • (2)任何传入实参和形参必须放在圆括号中。圆括号中写的是形参。
  • (3)函数的第一行语句可以选择性地使用文档字符串—-用于存放函数说明。
  • (4)函数内容以冒号起始,并且函数体要有缩进。
  • (5)return[expression]结束函数,选择性地返回一个值给调用者。不带表达式 的return相当于返回None。

函数参数

  • 无参
  • 有参
    • 必备参数
    • 命名参数
    • 缺省参数
    • 不定长参数

有参数函数——必备参数

  • 不可变参数:字符串、数字、元祖等,传递的是值
  • 可变参数:字典、列表,传递的是引用(其实这种归根结底传的也是值, 只不过是指向内存空间地址的值)
#传不可变参数
a=1
def func(a):
	a= a+1
	print(a) #2
func(a)
print(a)    #1
#
#传可变参数
l=[1,2,3]
def func(l):
	l.append(1)
	print(l)  #[1]
func([])
func(l)
print(l) # [1,2,3,1]
  • 函数中引用全局变量
a=1
def func():
	global a
	a += 1
	print(a) #2
func() 

默认参数

  • 不可变对象:str int float
  • 可变对象:list tuple dict
def add_end(L=[]):
	L.append('end')
	return L
print(add_end([1,2,3]))
print(add_end(['1','2','3']))
print(add_end())
print(add_end())
print(add_end())

>>[1,2,3,'end']
>>['1','2','3','end']
>>['end']
>>['end','end']
>>['end','end','end']

定义默认参数要牢记一点:默认参数 必须指向不变对象

def add_end(L=None):
    if L is None:
    	L=[]
	L.append('end')
	return L

有参数函数——命名参数

  • 传参时命名参数必须在非命名参数的后面
def add(a,b,c):
    return a+b+c
print(add(3,c=2,b=1))
print(add(3,a=1,b=2))  #TypeError: add() got multiple values for argument 'a'
print(add(b=1,c=2,3))  #SyntaxError: positional argument follows keyword argument

有参数函数——缺省函数

  • 默认值必须要放到没有默认值参数的最后面
def func(s,times=1):
	print(s*times)
print('gloaryroad')
print('golaryroad',4)
  • 关键参数赋值,指定其中的一部分默认参数值
def func(x, y=3, z=8):
	print ('x is', x) 
	print ('y is', y)
	print ('z is', z)
func(3,7)
print('-'*30)
func(25,z=24)
print('-'*30)
func(z=50,x=100)

不定长函数

  • 传递元祖
def powersum(power,*args):
	total = 0
	for i in args:
		total += pow(i,power)
	return
print (powersum(2,3))   #9
print (powersum(2,3,4)) #25
print (powersum(2,3,4,5))  #50
  • 传递字典
  • *args表示的是一个元组
  • **args表示的是一个字典
def func2(a,b=100,*arg,**args):
	print ("keys type=%s" % type(keys)) 
	print ("keys=%s" % str(keys))
	print ("name=%s" % str(keys['name'])) 
	print ("sex=%s" % str(keys['sex'])) 
	sum=0
	for i in args:
		sum += i
	print('sum=',sum)
	for key,value in keys:
		print(key,value)
	fun2(1,2,3,4,name="vp",age=19,sex="m")

有参数函数——不定长参数

  • 元祖作为参数:*arg,元祖长度不定
def func(a,b,*arg):
	print(type(arg))
   	for i in arg:
		print(i)
print(func(1,2))
print(func(1,2,3))
print(func(1,2,3,4,5))
  • 字典作为参数:**key,字典长度不定
def func(a,b,**kw)
	print(type(kw))
	for k,v in kw.values():
		print(k,'=',v)
print(1,2,c=3,d=4,e=5)

def func(a,b,*arg,**kw):
     sum=a*b
     for i in arg:
             sum *=i
     for v in kw.values():
             sum *= v
     return sum
print(1,2,3,4,c=5,e=6)
print(1,2,*(3,4),**{'c':5,'d':6})
c=(3,4)
>>> f={'c':5,'d':6}
>>> print(func(1,2,*c,**f))
          
>>720

Pass

  • 在函数或者类中,使用pass语句,表示一个空的语句块, 仅作为占位,执行后并没有任何效果,可以用于定义待 开发的函数或类
	def someFunction(): 
		pass

函数返回值

  • 返回一个值
  • 返回多个值
  • 没有return语句时,自动return None
	def sum(operandA,operandB):
		return float(operandA)+float(operandB)
	print ("10+5=",sum(10,5))

	def func(a,b): 
		return a,b
	print (func(10,20)) #(10,20) 返回tuple

猜你喜欢

转载自blog.csdn.net/zhanghan2012/article/details/87911588