python函数中需要得到字符串实参_篇一 python函数

20200205

##函数

函数也是一个对象

对象是内存中专门用来存储数据的一块区域

函数可以用来保存一些可执行的代码,并且可以在需要的时候,对语句进行多次的调用

创建函数:

def 函数名([形参1,形参2,...]):

代码块

注意:函数名必须要符合标识符的规则(字母、数字、下划线,不能以数字开头)

函数中保存的代码不会立即执行,只有在调用代码的时候才会执行。

示例代码:

def fn()

print('hello')

print('我的第一个函数')

print(fn)

print(type(fn))

fn()

fn()

fn()

#fn是函数对象,fn()调用函数

#print是函数对象,print()调用函数

函数是实现某种功能,而非上述无用的功能。

代码:

def sum(num1,num2):

int sum

sum=num1+num2

print(sum)

sum()

##函数的参数

在定义函数时,可以在函数名后的()中定义数量不等的形参。多个形参之间使用,隔开

形参(形式参数):定义形参就相当于在函数内部声明了变量,但是没有赋值。

示例代码:

def sum(num1,num2):

num1=None

num2=None

实参(实际参数):如果函数定义时指定了形参,那么在函数调用时必须传递实参,实参会赋值给对应的形参,简单来说,几个形参就得传递几个实参。

##函数的传递方式

定义形参时,可以为形参指定默认值。如果用户传递了参数,默认值不生效;反之。

代码:

def fn(a,b,c=20):

print("a=",a)

print("b=",b)

print("c=",c)

fn(1,2,3)

fn(1,2)

实参的传递方式分为如下两类:

位置参数:对应位置的实参赋值给对应位置的形参

关键字参数:不按照形参定义的顺序去传递,而是直接根据参数名去传递参数。

位置参数和关键字参数可以混合使用,必须将位置参数写在前面。

##实参的类型

任何类型都可以作为实参。例如:字符串、数字、函数、boolean。

函数在调用时,解析器不会检查实参的类型。

示例代码:

def fn4(a):

#在函数中对形参进行重新赋值,不会影响其他变量

#a=20

#a是一个列表,尝试改变列表中的元素

#如果形参执行的是一个对象,当我们通过形参去修改对象时,会影响到所有只想该对象的变量

a[0]=30

print('a=',a,id(a))

c=[1,2,3]

fn4(c)

print("c=",c,id(c))

#,如果不想改变c的内容,可以使用c列表的副本:c.copy()或者c[:]

fn4(c[:])

##不定长的参数

定义一个函数,可以求任意数字的和。

上述问题,在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参,

它将会将所有实参保存在一个元组中。

带*号的参数只能有一个,可以和其他参数配合使用

可变参数不是必须在最后一个,但是注意,带*的参数后的所有参数,必须使用关键字参数。

*号的参数只能接收位置参数

**号的参数可以接收关键字参数。它会将这些参数保存在字典中。key是参数的名字,字典value是参数的值。

**号的参数只能有一个,必须放置所有参数的最后。

示例代码:

def fn(*a):

print("a=",a,type(a))

fn(1,2,3,45,5)

#*a会接受所有的位置参数,并且会将这些实参统一保存到一个元组中(装包)

def sum(*nums):

result=0

for n in nums:

result+=n

print(result)

def fn(a,b,*c):

print("a=",a)

print("b=",b)

print("c=",c)

#c必须使用关键字参数

def fn(a,*b,c):

print("a=",a)

print("b=",b)

print("c=",c)

#b和c必须使用关键字参数

def fn(*a,b,c):

print("a=",a)

print("b=",b)

print("c=",c)

def fn(**a):

print("a=",a)

fn(a=1,b=2,c=3)

##参数的解包

使用*对元组解包,使用**对字典解包

示例代码:

def fn(a,b,c):

print("a=",a)

print("b=",b)

print("c=",c)

#创建元组

t=(10,20,30)

fn(t[0],t[1],t[2])

#传递实参时,也可以在序列类型的参数前添加星号,这样会自动将序列中的元素以此作为参数传递

#这里要求序列中元素的个数必须和形参的个数一致

fn(*t)

#创建字典

d={'a':12,'b':11,'c':9}

fn(**d)

##返回值

函数执行以后返回的结果

通过return来指定函数的返回值

可以直接使用函数的返回值,也可以通过一个变量来接受函数的返回值

return 后面可以跟任何的对象,也可以是函数

如果仅仅写一个return或者不写return,则相当于return None

函数中,return后的代码不会执行,return一旦执行函数自动结束。

break退出当前循环,continue跳过当此循环。

print(fn)

#fn是函数对象,打印fn实际是在打印函数对象

print(fn())

#fn()是在调用函数,打印fn()实际上实在打印fn()函数的返回值

##文档字符串

help()是python的内置函数,例如:help(print)

通过help()函数可以查询python中的函数的用法

语法:help(函数对象)

help(print)#获取print()函数的使用说明

文档字符串(doc str)

在定义函数时,可以在函数内部编写文档字符串,文档字符串就是函数的说明

当我们编写文档字符串时,就可以通过help()函数来查看函数的说明

文档字符串非常简单,其实直接在函数的第一行写一个字符串就是文档字符串

如果对外项目,建议使用英文。

示例代码:

def fn(a:int,b:bool,c:str='hello')->int:

'''

这是一个文档字符串的示例

函数的作用:....

函数的参数:

a,作用,类型,默认值

'''

return 10

help(fn)

##作用域(scope)

指的是变量生效的区域

示例代码:

b=20

def fn():

a=10#定义在函数内部,作用在函数内部,函数外部无法使用

print(a)

print(b)

fn()

print(a)

print(b)

python中一共有两种作用域:

全局作用域

全局作用域在程序执行时创建,在程序执行结束时销毁

所有函数以外的区域都是全局作用域

在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问

函数作用域

函数作用域在函数调用时创建,在调用结束时销毁

函数每调用一次就会产生一个新的函数作用域

在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问

变量的查找

当我们使用变量时,会优先在当前作用域中寻找该变量,如果有则使用,如果没有则继续去上一级作用域中寻找,如果有则使用,如果依然没有继续去上一级作用域中寻找,以此类推,知道全局作用域,依然没有找到,则会抛出异常。

示例代码:

def fn3():

#a=10#函数中为变量赋值时,默认都是为局部变量赋值

#

global a

a=10

print("函数内部:",a=",a)

fn3()

print("函数外部部:",a=",a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值