函数

#!/usr/bin/env python
# -*- coding=utf-8 -*-
'''
函数 - 将要实现某个功能的代码放在一起,组成一个的模块
格式:
定义一个函数:
def 函数名(参数1,参数2...):
    实现功能代码
    return 返回值  函数遇到return后就不会再运行return后面的代码
    如果没有写return,则返回None

调用函数:
函数名() #没有返回值
变量 = 函数名() #有返回值的函数,定义一个变量接收返回值

实参:实际参数,指的是调用函数的时候传进去的值
形参:形式参数,指的是函数定义的时候的参数

给函数传递信息的时候将实际参数交给形式参数的过程叫做传参

形参:
    1、位置参数:
    2、默认参数:当一个参数的值重复出现的时候,可以设置一个默认值
    默认参数必须放在位置参数之后
    3、动态参数 -- (补充)
实参:
    1、位置参数:按照形参的变量的顺序依次写对应的值
    2、关键字参数:使用关键字=值的形式赋值,不需要按顺序
    3、混合参数:1.2的混合,位置参数必须在关键字参数之前
'''
# 无参数无返回值
def num_1():
    print("我是无参数无返回值函数")
num_1()

#无参数有返回值
def num_2():
    return 1 #返回1
print(num_2())

#有参数无返回值
def num_3(a):
    print(a)
num_3(2)

#有参数有返回值
def num_4(a,b):
    return a if a > b else b #三目运算符  结果1 if 条件 else 结果2  if条件成立返回结果1,否则返回结果2
print(num_4(3,4))

# --------形参---------
def message(name,age,address): # 形参 - 位置参数
    print('名字是'+name+'年龄是:'+str(age)+'地址是:'+address)

def message_1(name,age,sex = ''): # 形参 -  sex是默认参数 不写默认是男
    print('名字是'+name+'年龄是:'+str(age)+'性别是:'+sex)

# -------实参---------
message('',12,'北京') #位置参数
message(name='',address='北京',age=18) # 关键字参数
message('liang',age=18,address='bj') #混合参数

# 形参中的默认参数中 如果不写默认是'男'
message_1('xiao',12) # 名字是xiao年龄是:12性别是:男

注意:默认参数如果是一个可变数据类型:

def defult_param(a,l = []):
    l.append(a)
    print(l)

defult_param('alex') #['alex']
defult_param('egon') # ['alex', 'egon']
defult_param('123',[]) # ['123']

 补充:

函数参数 -- 动态传参

我们需要给一个函数传参,而参数又是不确定的,或者我给一个函数传很多参数,我们可以考虑使用动态参数:

动态参数可以分为两种:

用*args接收,返回元组形式

用**kwargs接收,接收关键字参数(比如:food='盖浇饭')返回字典

def func_1(*args,**kwargs):
    print(args,type(args)) #(1, 2, 3, 4) <class 'tuple'>
    print(kwargs,type(kwargs)) # {'food': '盖浇饭', 'drink': '脉动'} <class 'dict'>
func_1(1,2,3,4,food='盖浇饭',drink='脉动')

顺序: 位置参数, 动态参数*, 默认值参数

 
 
 
原文地址:https://www.cnblogs.com/liangying666/p/9166949.html