当前位置: 移动技术网 > IT编程>脚本编程>Python > Python基础——函数

Python基础——函数

2020年07月07日  | 移动技术网IT编程  | 我要评论
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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网