python函数默认参数作用域

当def函数参数私下认可值为目的时,比如列表[],字典{}

二、函数

 

 

演示1:估算一下,会输出什么??? 

2.1、重新认知函数

def ddd(a,b=[]):
    b.append(a)
    return b

print(ddd(1))
print(ddd(2,['a','b','c']))
print(ddd(3))

图片 1

 

     Python
中所谓的应用函数,就是把你要拍卖的目的放置二个名字背后的括号里。轻易的话,函数就是那样使用的,往里面塞东西就足以获取管理结果。

[1] 
[‘a’,’b’,’c’,’2′] [3]   ?????你是还是不是以为是这么? 输出一下会见

 

出口结果:

– Python 的 内建函数(Built-in Functions)

D:\Python27\python.exe D:/untitled1/temp5.py
[1]
['a', 'b', 'c', 2]
[1, 3]

 

 

以 Python 3.60 版本为例,风度翩翩共存在 68 个这么的函数,它们被统称为
内建函数(Built-in Functions)。

总的来看上述结果有哪些主张,为啥吗???[1,
3]而不是[3],那么修正一下代码,输出b变量的内部存款和储蓄器地址看一下。作者想,能够找到作者要的答案

进而被称之为内建函数,实际不是因为还会有“外建函数”这些概念,“内建”的意思是在
Python 3.60 版本安装达成后,你不用创制就足以一向利用这一个函数,即
表示这么些函数是“自带”的而已。

def ddd(a,b=[]):
    b.append(a)
    print(id(b)) #查看内存地址
    return b

print(ddd(1))
print(ddd(2,['a','b','c']))
print(ddd(3))

 

出口结果:

Python 3.60 的 66个 内建函数(Built-in Functions):

D:\Python27\python.exe D:/untitled1/temp5.py
170580872
[1]
171586568
['a', 'b', 'c', 2]
170580872
[1, 3]
    Built-in Functions    
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

从输出中,能够看来,除了,第1个print,其余多少个内部存款和储蓄器是生机勃勃们的。那么考虑一下为何第一个为被改过。结果决定,因为第2个print改动了,b对象,重新成立了多个对象。

 

 

 

那么大器晚成旦不想现身,每一次调用,默许值对象不改变的标题,能够这么改一下:

2.2、创造函数

def ddd(a,b=None):
    if type(b).__name__!='list':
        b = []

    b.append(a)
    print(id(b)) #查看内存地址
    return b

print(ddd(1))
print(ddd(2,['a','b','c']))
print(ddd(3))

 

起初值设置为None,通过品种判定来,举行内部管理理

– Python 创设函数的格式如下:

 

 

小结:

图片 2

      
1.python定义def的时候,倘若参数做为对象,那么,如果未有改换那么些指标的前提下,那么尽管,多次调用该函数也,不会创设新的靶子。

 

         
那么就能够晤世一再调用函数,有不小可能率都举行了拍卖。

 

  2.只要,未有万分供给,函数参数,尽量不采用对象,若是生机勃勃有亟待,对象开展内部管理理。传暗中认可值None

★ 重 点:

 

  ① def(即 define
,定义)的意义是成立函数,也正是概念一个函数。

  ② 闭合括号前边的 冒号( )不能够贫乏。

  ③ 函数「缩进」后边的话语被称作
语句块(block),缩进是为着标记语句和逻辑的依附关系,是 Python
最显然的特征之大器晚成。(大多数语言会用大括号 { } 来注明那样附属关系)

  ④ return 即再次来到结果。在 Python 中 return 是可选的,如果未有 return
即函数的重临值为 ‘None’。 

 

☆ 注意:

  ① def 和 return 是 关键字(keyword),Python
便是靠识别这几个特定的显要字来通晓客户的来意,实现更为复杂的编制程序。

  ② 在 Python 中 return 是可选的(optional),那象征你在创制函数时不写 return 也足以顺遂地定义四个函数并调用,只不过再次回到值 是 ‘None’ 罢了。

  ③ 大家把 使用函数 这种表现称作“调用”(call)。即 调用函数 。

 

图片 3

 

# 例子,温度的单位有 摄氏度 和 华氏度
,已知 摄氏度 与 华氏度 的转向公式为:F = 9/5*C+32 。

# 今后大家创制一个能完毕 摄氏度 转变为
华氏度 的函数,并调用该函数完结转变:

 

def temp_converter(c):

return str(9/5*c+32) + ‘?F’

 

c_in = input(‘请输入摄氏温度:’)

c_in = int(c_in)

f = temp_converter(c_in)

print(‘华氏温度为:’ + f)

 

 

2.3、传递参数与参数类型

 

– 地点参数 与 关键词参数

 

    根据差别传递参数的法子,能够分为:职责参数 (positional argument)
与 十分重要词参数 (keyword argument)。

 

    在 调用函数 时,依照 该函数被创立时
各参数所在的岗位顺序,分别把参数的值按梯次填到对应的职责,这样种传播参数的办法被称作「岗位参数 (positional
argument)」。

 

    在 调用函数
时,在种种参数名称后边付与贰个大家想要传入的值。这种以名称作为意气风发意气风发对应的参数字传送入格局被称作「主要词参数 (keyword
argument)」。

 

图片 4

 

# 例子,我们已知 梯形面积的总括公式为:S =
(a+b)*h/2

# 成立叁个函数,总结梯形面积:

 

def tra_area(a,b,h):

return 1/2 * (a + b) * h

 

print(tra_area(h=3,b=2,a=1)) #
-成功,输出:4.5

print(tra_area(h=3,b=2,1)) #
-失利!原因:「地方参数」无法在「关键词参数」之后出现!

print(tra_area(a=1,b=2,3)) # 
-战败!原因:「地点参数」不可能在「关键词参数」之后出现!

print(tra_area(1,2,h=3)) #
-成功,输出:4.5

print(tra_area(1,2,b=3)) #
-战败!原因:同二个参数无法被另行赋值!

 

☆ 注意:

    ①「关键词参数」可以不思索地点顺序。

    ②「地方参数」无法在「关键词参数」之后现身!

    ③ 同叁个参数不可能被再一次赋值!

 

#
大家以往给大器晚成组变量赋值,然后再调用函数,大家来看结果会有如何变化:

 

a = 1

b = 2

h = 3

print(tra_area(h,b,a)) # 输出:2.5

print(tra_area(h = h,b = b,a = a)) #
输出:4.5

 

☆ 注意:

    在 创设函数 时 设定的参数是「形参」,在 调用函数 时
填入的参数是「实参」,大家要搞精晓那五个概念。

 

– 默 认 参 数

 

    默许参数 正是函数中某些有默许值的参数。调用函数时就是不给予填入参数,该函数依旧能照常运作。

 

  参数的默许值能够被退换,即 暗中同意参数能够被再一次赋值。

 

   
给四个参数设定默许值(创设默许参数)特轻便,我们只需求在概念参数的时候给参数赋值就能够。如下:

 

def tra_area(a,b,h=3):

return 1/2 * (a + b) * h

 

print(tra_area(1,2)) # 输出:4.5

print(tra_area(1,2,6)) # 给私下认可参数重新赋值 6,输出:9.0

print(tra_area(1,2,h=6)) # 给暗中认可参数重新赋值 6,输出:9.0

 

 ☆ print()函数的暗中同意参数
sep(用于设定多少个打印结果里面包车型客车相间符号)的私下认可值为‘
’空格,然而大家能够将其再度设定为‘/n’ 即 换行
。也正是说将种种打字与印刷结果以换行符号举办划分。如下:

 

print(‘  *’,’ ***’,’*****’,’  |’,sep=’\n’)

”””””””””””””””””’

上述代码输出:

  *

 ***

*****

  |

”””””””””””””””””’

 

 

2.4、设计协调的函数

 

  * 倘诺你今后往哪个地方去跟什么人 函数 和 方法
到底是怎么关系的话,为了顺遂地现在张开,笔者得以告知您 方法 正是 函数
的一种,只不过在分裂的岗位而已,使用原理和函数特别相符。

 

# 创建 file_create()
函数,功效:创立文件(特别是.py文件)

# 该函数共有4个参数:

# namn -文件名

# content -文件内容

# extension -文件扩大名,即 后缀

# path -文件坐在的目录路线

def file_create(name,content,extension=’py’,path=’E:/PY_Test/New/’):

full_path = path + name + ‘.’ + extension

file = open(full_path,’w’)

file.write(content)

file.close()

print(‘文件 ‘ + name + ‘.’ + extension + ‘ 已被成立在 ‘ + path + ‘
中。’)

 

file_create(‘test’,’# hello world’) #
调用函数

 

 

# 创建 word_filter()
函数,功用:单词过滤器

# 该函数共有3个参数:

# content -内容

# target_word -要被过滤的单词

# new_word – 替换的单词

# 施行成功 再次来到被过滤后的原委(str类型)。

def word_filter(content,target_word=’lame’,new_word=’Awesome’):

return content.replace(target_word,new_word)

 

new_content = word_filter(‘Python is lame! is very lame!! is very very
lame!!!’) # 调用函数

print(new_content)

# 输出:Python is Awesome! is very
Awesome!! is very very Awesome!!!

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注