欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python基础——函数

程序员文章站 2022-07-07 19:29:29
python函数1.定义函数使用关键字def告诉Python说要定义一个函数。def 后面跟函数名和()和分号:后面所有的缩进构成函数体def sayhello(): print('hello')#函数调用sayhello()2.实参和形参形参——函数完成工作时所需要的信息,在函数定义中的括号里实参——调用函数时传递给函数的信息2.1 传递实参向函数传递实参的方法有很多,可以用位置实参,要求实参的顺序和形参的顺序相同;可以用关键字实参,其中每个实参都由变量名和值...

python函数

1.定义函数

  • 使用关键字def告诉Python说要定义一个函数。
  • def 后面跟函数名和()和分号:
  • 后面所有的缩进构成函数体
def sayhello():
    print('hello')

#函数调用
sayhello()

2.实参和形参

  • 形参——函数完成工作时所需要的信息,在函数定义中的括号里
  • 实参——调用函数时传递给函数的信息

2.1 传递实参

  • 向函数传递实参的方法有很多,可以用位置实参,要求实参的顺序和形参的顺序相同;可以用关键字实参,其中每个实参都由变量名和值组成;还可以用列表和字典。

2.1.1 位置实参

基于实参的顺序将实参和形参关联起来。

def output(boy,gril):
    print(boy+" likes "+gril)
    
b='kiki'
g='niki'
#b作为第一个参数,他的值传递给boy,g的值传递给第二个参数gril
output(b,g)
#这样子的输出的男女关系就是相反的
output(g,b)

2.1.2 关键字实参

关键字实参时传递给函数的名称-值对。直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆。不需要考虑传递时实参的顺序。

output(boy='niki',gril='nene')

la='niki'
li='nene'
output(boy=li,gril=li)

2.1.3 默认值

定义函数时,可以给形参指定默认值。在调用函数时给形参提供实参时,python将使用指定的实参值;若没有给函数传递实参,就使用默认值

def output(boy='kaka',gril='keke'):
    print(boy+" likes "+gril)
    
b='kiki'
g='niki'
#b作为第一个参数,他的值传递给boy,g的值传递给第二个参数gril
output(b,g)
#这样子的输出的男女关系就是相反的
output(g,b)
output()
  • **注:**使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参,这样让python依然能够正确的解读位置实参
  • 平时使用可混用。

3.返回值

  • 普通返回值示例:

    def hehe(x):
        x=x+1
        return x
    print(hehe(1))
    
  • **返回字典或列表:**python函数返回各种数据类型,还很简单。

    def build_person(first_name,last_name,age=''):
        person={'first_name':first_name,'last_name':last_name}
        if age:
            person['age']=age
        return person
    p=build_person('hh','haha',100)
    print(p)
    

4.传递列表

感觉没啥东西啊,,,就是把列表作为参数传进去,还能在函数中对列表进行一系列操作。。。。

函数中对传入列表的操作是永久的。

  • 禁止函数修改列表的方法:

    向函数传递列表的副本而不是原件。

  • 那怎么传递列表的副本呢?

    用切片表示法。

    function_name(List_name[:])

    def print_models(unprint_desings[:],compeleted_models):
        return
    #但是这种方法会占用内存和增加运行时间,所以如果不是非常的必要,最好不要创建副本
    

5.传递任意数量的实参

python允许函数从调用语句中收集任意数量的实参(NB)

5.1 任意数量的值

def stu_infor(*stu):
    print(stu)
  • 形参中的*告诉Python创建一个名为stu的空元组,并将所有收到的值存入这个元组中,然后函数中就可以对元组中的元素进行操作。
>>> def stu_infor(*stu):
...     print(stu)
...
>>> stu_infor('jjjjj','llllll',)
('jjjjj', 'llllll')
  • 实际中可以将使用位置实参和任意数量实参相结合,但要注意,要将可接受任意数量实参的形参放在形参列表的最后。

5.2 任意数量的键值对(关键字实参)

def stu_infor(**stu):
    print(stu)
    return
  • 两个** 告诉Python创建一个空字典,并将所有的名称—值对放入这个字典中;在函数中可以进行对字典的操作。
>>> stu_infor('jjjjj','llllll',)
('jjjjj', 'llllll')
>>> def stu_infor2(**stu):
...     print(stu)
...     return
...
>>> stu_infor2('name'='kiki','ID'=123456,'grade'=100)
  File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>> stu_infor2('name':'kiki','ID':123456,'grade':100)
  File "<stdin>", line 1
    stu_infor2('name':'kiki','ID':123456,'grade':100)
                     ^
SyntaxError: invalid syntax
>>> stu_infor2(name='kiki')
{'name': 'kiki'}
>>> stu_infor(name='kiki',ID=2191421813,grade=90)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: stu_infor() got an unexpected keyword argument 'name'
>>> stu_infor2(name='kiki',ID=2191421813,grade=90)
{'name': 'kiki', 'ID': 2191421813, 'grade': 90}

6.函数与模块

函数优点之一——将函数的代码块和主程序分离。将代码模块化。介绍几种Python中导入函数模块的方法

6.1 创建模块

  • 模块是扩展名为.py的文件,里面包含要导入到程序中的代码。

6.2 导入整个模块

  • 用关键字import导入整个模块

  • 使用模块中的函数时,格式为模块名.函数名(参数),modulename.functionname(a,b,c…)

    import os
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    

6.3 导入特定的函数

  • 可以导入模块中的特定函数,语法如下:
from module_name import function_name
from module_name import function_name0,function_name1,function_name2

function_name0()
function_name1()

6.4 使用as

  • 使用as给函数指定别名

    from hahahah import hehe as he
    
    he(1,2,3)
    
  • 使用as给模块指定别名

    import hahahaha as ha
    
    ha.hehe(1,2,3)
    

6.5 导入模块所有的函数

  • 使用* 运算符告诉Python将模块中所有的函数都复制到这个程序文件中。

    from hahahah import*
    

本文地址:https://blog.csdn.net/weixin_46057260/article/details/107162169