Python入门笔记02,python函数默认参数作用域

Python入门笔记02,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:Python27python.exe D:/untitled1/temp5.py
[1]
['a', 'b', 'c', 2]
[1, 3]

 

 

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

来看以上结果有怎样主张,为啥吧???[1,
3]Python入门笔记02,python函数默认参数作用域。而不是[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 的 七二十一个 内建函数(Built-in Functions):

D:Python27python.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()  

从出口中,能够看看,除了,第贰个print,此外三个内部存款和储蓄器是生龙活虎们的。那么考虑一下为啥第3个为被改变。结果决定,因为第三个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的时候,若是参数做为对象,那么,若无改造这些指标的前提下,那么就是,数次调用该函数也,不会创制新的对象。

 

         
那么就能情不自禁数11次调用函数,有超大可能率都进展了拍卖。

 

  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!!!

 

admin

网站地图xml地图