Python 全栈开发:python函数基础

摘要:
Python函数1。功能是什么?
python函数

一、函数是什么?

定义:函数是将一组语句的集合通过一个名字(函数名)封装起来,要执行这个函数,只需要调用函数名即可。

特性:

1.减少重复代码

2.使程序变的易扩展

3.是程序变得易维护

二、函数的定义(语法)

def:定义函数的关键字

函数名:用来调用函数的(函数名的定义需具有一定描述性的含义,让人家大概能知道函数的作用是什么)

文档描述:函数的使用说明

代码块:实现功能的代码

return:函数的返回值

eg:

def 函数名(参数1,参数2......):
      
     ‘’‘
     文档描述
     ’‘’     
代码块1 代码块2 ......
return

计算两个数(a,b)的和

eg:

def my_sum(a,b):
    sum = a+b
    return sum

三、函数的调用

1.调用方式

res  =  函数名(实参,实参)

根据函数名找到函数的内存地址,然后执行函数体代码

eg:调用上面定义的没有my_sum(a,b) 函数

# 计算x,y 的和
x = 10
y = 20
res = my_sum(x, y)
print(res)

2.遵循的规则

先定义,后调用的原则

没事先定义函数直接调用,相当于在引用一个不存在的变量(报错:xxx is not define)

def foo():
    print('调用了函数 foo()')
    bar()
def bar():
    print('调用了函数 bar()')
# 调用函数
foo()


结果:
调用了函数 foo()
调用了函数 bar()

下面的这种调用方式:违反了先定义,后调用的原则,出现错误

def foo():
    print('调用了函数 foo()')
    bar()
# 调用函数
foo()
def bar():
    print('调用了函数 bar()')

错误:

NameError: name 'bar' is not defined

四、函数的返回值(return)

作用:退出函数,选择性的向调用方返回结果(即:返回值,默认返回值为 None)

返回值基本三种形式:

1.没有return,返回值 None

def func1():
    print('这个函数的返回值为None')

2.return 一个值,返回该值本身

def func2():
    print('这个函数的返回值为:你好啊')
    return '你好啊'

3.return 多个值,逗号分割,返回一个元组

def func3():
    print('这个函数的返回值为(1,2,3,5,6)')
    return 1, 2, 3, 5, 6

五、函数的参数

1.形参和实参

形参(形式参数):在函数定义时,括号内定义的参数

实参(实际参数):在调用函数时,括号内传入的参数

注意:实参与形参只有在函数调用的时候才会绑定(即讲值传入函数内),在函数调用结束后就会立刻解除绑定

2.参数类型

位置参数,关键字参数,默认参数,可变参数  

位置参数

什么是位置参数:就是根据顺序依次定义的函数

哪些是位置函数

1.位置形参:函数定义时,括号内按照位置依次定义的参数

2.位置实参:函数调用时,括号内按照位置依次传入的参数

def foo(x,y,z):
    print(x,y,z)

需要注意的是:调用函数时,位置实参要与位置形参一一对应

关键字参数

什么是关键字参数:在函数调用时,按照 key-value 形式定义的实参,称为关键字参数

eg:

def foo(x, y, z):
    print(x, y, z)


foo(1, 2, 3)        # 位置参数的调用方式
foo(x=1, y=2, z=3)  # 关键字参数
foo(y=2, x=1, z=3)  # 关键字参数

注意点:

通俗一点的说,就是指名道姓的给形式参数传值,即使不按照顺序定义实参,也能给形参传值

关键字参数与位置参数一起使用:

遵循的规则:

1.必须遵循形参的规则

2.不能为同一形参重复传值

3.位置参数必须放在关键字参数的前面

默认参数

什么是默认函数:在函数定义时,已经被赋值的形参,叫做默认参数

注意点:

1.在函数调用的时候,有默认值的形参,可以不给其传值

def register(name, age, sex='male'):    # sex是默认参数
    print(name, age, sex)

register('fixd', 18, )          # 默认参数 没有传值
register('mike', 20, 'female')  # 默认参数 传入一个新值

# 结果
# fixd 18 male     # 没有传值,会使用默认值     
# mike 20 female    # 传入新值,会覆盖掉默认值

2.位置形参必须在默认参数的前面

eg: 下面这种是错误

def register(sex='male',name, age, sex='male'):  #错误,在pycharmdgdsfgasdf
    print(name, age, sex), 

3.默认参数的值只在定义阶段赋值一次,也就是说默认参数的值再定义阶段就固定死了

m = 10
def foo(x, y=m):    #函数定义时,默认赋值   
    print(x, y)

m = '20'        #测试 是否会影响函数的默认值
foo(1)
foo(1, 11)

# 结果
# 1 10
# 1 11

4.默认参数的值应该设置为不可变类型

可变长参数

在实际函数调用时,我们经常会遇到,传入实参个数不确定的情况

应对这种情况,定义形参需要时用 *args,**kwargs 以用来接溢出的函数
(args 与 kwargs  是起的名字,本身没有什么特殊含义,也可以定义为其他 的名字)形参里包含*与**

*  会将溢出的位置实参全部接收,然后保存成元组的形式赋值给args

def foo(x,y,z,*args): #args=(4,5,6,7,8)
    print(x,y,z)
    print(args)

foo(1,2,3,4,5,6,7,8,)

#结果:
1 2 3
(4, 5, 6, 7, 8)

** 会将溢出的关键字实参全部接收,然后保存成字典的形式赋值给kwargs

def foo(x,y,z,**kwargs): # kwargs={'c':3,'a':1,'b':2}
    print(x,y,z)
    print(kwargs)

foo(x=1,y=2,z=3,a=1,b=2,c=3)

#结果:

1 2 3
{'a': 1, 'b': 2, 'c': 3}

免责声明:文章转载自《Python 全栈开发:python函数基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 全栈开发:python函数进阶Python 全栈开发:python文件处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

1、Python 日期时间格式化输出

今天帮朋友写自动化脚本,又需要用格式化日期,又忘记怎么写了,还是写到自己博客里面,方便日后需要的时候看一眼吧。So,临时加一篇 Python 的文章。 1、Python的time模块 importtime print(time.time()) #输出的是时间戳 print(time.localtime(time.time()))...

Linux Socket学习(六)

套接口类型与协议在第一章我们看到了如何使用socketpair函数来创建一对本地套接口。在这一章我们将会了解使用socket函数来创建一个套接口。通常情况下这两个函数都有域,套接口类型,以及协议参数。这一章将会建立在前几章的基础之上,并且主要关注于socket函数调用。这包括下面的一些内容:域参数套接口类型参数协议参数指定一个套接口的域在 第一章,我们可以看...

Pygments — Python syntax highlighter

Pygments — Python syntax highlighter This is the home of Pygments. It is a generic syntax highlighter forgeneral use in all kinds of software such as forum systems, wikis or other...

UNIX 进程间通讯(IPC)概念(Posix,System V IPC)

  IPC(Inter-Process Communication,进程间通讯)可以有三种信息共享方式(随文件系统,随内核,随共享内存)。(当然这里虽然说是进程间通讯,其实也是可以和线程相通的)。 相对的IPC的持续性(Persistence of IPC Object)也有三种: 随进程持续的(Process-Persistent IPC) I...

python简介及安装

python? python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 解释型:开发过程没有编译; 交互型:可以在Python 提示符>>>后直接执行代码; 面向对象:Python支持面向对象的风格或代码封装在对象的编程技术; python环境搭建 python的下载与安装 下载:直接在官网下载 网址:...

inline

函数调用开销比较大,需要将当前程序的一些信息保存到栈中。 当程序中对某一个功能不复杂的函数频繁调用时,可以用inline修饰,当做内联函数。调用内联函数,c++编译器会将函数体中的代码插入到调用该函数的语句处,用实参代替形参。 注意:内联函数使用前必须进行完整的定义; 这是用空间换时间的措施,函数不能太长太复杂。...