python 函数

python使用函数

def 函数名(参数):

  代码

  return

def add(x,y):

  return (x+y)

>>> add(5,3)
8

>>> add("aba"+"ada","qweqew")
'abaadaqweqew'

默认参数

def add(x=5,y=3):

  return (x+y)

>>> add()

8

>>> add(10,5)
15

>>> add(y=2,x=3)
5

>>> add(x=3,2)
SyntaxError: positional argument follows keyword argument

//*args 接受列表

def func1(*args):
  print(args[0])
  print(type(args))
  print(args)

>>> func1('username',"password")
username
<class 'tuple'>
('username', 'password')

接受任意参数

def func1(*args,**kwargs):
  print(args[0])
  print(type(args))
  print(args)
  print(type(kwargs))
  print(kwargs)

>>> func1(1,name="username",password="password")
1
<class 'tuple'>
(1,)
<class 'dict'>
{'name': 'username', 'password': 'password'}

获取想要的字段

def func2(*args,**kwargs):
print(kwargs)
print(kwargs["username"])
print(kwargs["password"])

>>> func2(username="username",password="password")
{'username': 'username', 'password': 'password'}
username
password

函数内部无法修改值

x= 6

def func3(x):
  x = 7
  func3(x)
  print(x)

#变成全局变量

def func4():

  global x
  x = 7
func4()
print(x)

函数即变量

>>> fun = add
>>> fun
<function add at 0x000001365D5C2E18>
>>> fun()
8

函数递归            递归就是函数调用自身的过程                  但是必须要有结束条件       否则会一直调用自身

1.要有明确的结束条件

2.进行一次递归 规模会减小

3.效率不高 容易栈溢出 而且python有递归层数限制 大概小于1000 

def test(x):
  if(x>=1):
    x = x - 1
    return x+test(x)
  else:
    return 0

例如 传入 10         结果就是45       就是9+8+7+6+5+4+3+2+1+0

匿名函数 lambda

lambda 参数1,参数2,参数3:函数

>>> y = lambda x:x*x
>>> y
<function <lambda> at 0x0000026E3E9EAA60>
>>> y(5)
25

>>> z = lambda x,y:x*2+y*3
>>> z(3,2)
12

>>> mystr = lambda username,password,age:username+password+age

>>> mystr("asd","asd","18")
'asdasd18'

>>> f = lambda x,y,z:(x+1,y+1,z+1)

>>> f(1,2,3)
(2, 3, 4)

原文地址:https://www.cnblogs.com/hywhyme/p/11580580.html