
正文
python函数name,Python函数可以提高代码执行速度吗
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python __name__是什么
Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一。Python模块中通常会定义很多变量和函数,这些变量和函数相当于模块中的一个功能,模块被导入到别的文件中,可以调用这些变量和函数。那么这时 __name__ 的作用就彰显了,它可以标识模块的名字,可以显示一个模块的某功能是被自己执行还是被别的文件调用执行,假设模块A、B,模块A自己定义了功能C,模块B调用模块A,现在功能C被执行了:
如果C被A自己执行,也就是说模块执行了自己定义的功能,那么 __name__=='__main__'
如果C被B调用执行,也就是说当前模块调用执行了别的模块的功能,那么__name__=='A'(被调用模块的名字)
其实换一种说法也就是表示当前程序运行在哪一个模块中。
相关推荐:《Python入门教程》
下面举例说明:
首先自定义模块Student,在模块中定义功能Differ()
然后先自身执行,结果如下, __name__=='__main__'
然后B调用执行,结果 __name__=='Student'
上面出两次结果,是因为python中导入模块会先将文件执行一遍,如下图:
到这儿可能有人已经注意到,上面的 __main__ 在python中作可以为函数的入口,而实际工程常用 if __name__=='__main__'来表示整个工程开始运行的入口。此外你如果不想让功能的某部分被别的模块调用执行,比如我自定的模块Student里的‘我的密码是xxx’,只有自己执行才可以打印密码。所有你可以把部分写在if语句里,只有__name__=='__main__'的时候才能执行。这个可以这么理解,在if语句之外代码是最外层的,有点“全局变量”的意思,放入if里面就成了私有的了。
相关问答
Q1: Python的函数都有哪些?
Python 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
def functionname( parameters ): "函数_文档字符串"
function_suite
return [expression]
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
实例
以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。
实例(Python 2.0+)
def printme( str ): "打印传入的字符串到标准显示设备上"
print str
return
函数调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
如下实例调用了printme()函数:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 定义函数def printme( str ): "打印任何传入的字符串"
print str
return
# 调用函数printme("我要调用用户自定义函数!")printme("再次调用同一函数")
以上实例输出结果:
我要调用用户自定义函数!再次调用同一函数
参数传递
在 python 中,类型属于对象,变量是没有类型的:
a=[1,2,3]
a="Runoob"
以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
python 传不可变对象实例
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
def ChangeInt( a ): a = 10
b = 2ChangeInt(b)print b # 结果是 2
实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。
传可变对象实例
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明def changeme( mylist ): "修改传入的列表"
mylist.append([1,2,3,4])
print "函数内取值: ", mylist
return
# 调用changeme函数mylist = [10,20,30]changeme( mylist )print "函数外取值: ", mylist
实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,故输出结果如下:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]函数外取值: [10, 20, 30, [1, 2, 3, 4]]
参数
以下是调用函数时可使用的正式参数类型:
必备参数
关键字参数
默认参数
不定长参数
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用printme()函数,你必须传入一个参数,不然会出现语法错误:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printme( str ): "打印任何传入的字符串"
print str
return
#调用printme函数printme()
以上实例输出结果:
Traceback (most recent call last):
File "test.py", line 11, in module
printme()TypeError: printme() takes exactly 1 argument (0 given)
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printme( str ): "打印任何传入的字符串"
print str
return
#调用printme函数printme( str = "My string")
以上实例输出结果:
My string
下例能将关键字参数顺序不重要展示得更清楚:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printinfo( name, age ): "打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数printinfo( age=50, name="miki" )
以上实例输出结果:
Name: mikiAge 50
默认参数
调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可写函数说明def printinfo( name, age = 35 ): "打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数printinfo( age=50, name="miki" )printinfo( name="miki" )
以上实例输出结果:
Name: mikiAge 50Name: mikiAge 35
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串"
function_suite
return [expression]
加了星号(*)的变量名会存放所有未命名的变量参数。不定长参数实例如下:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple: print var
return
# 调用printinfo 函数printinfo( 10 )printinfo( 70, 60, 50 )
以上实例输出结果:
输出:10输出:706050
匿名函数
python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
以上实例输出结果:
相加后的值为 : 30相加后的值为 : 40
return 语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可写函数说明def sum( arg1, arg2 ): # 返回2个参数的和."
total = arg1 + arg2
print "函数内 : ", total
return total
# 调用sum函数total = sum( 10, 20 )
以上实例输出结果:
函数内 : 30
变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
全局变量
局部变量
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
实例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
total = 0 # 这是一个全局变量# 可写函数说明def sum( arg1, arg2 ): #返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print "函数内是局部变量 : ", total
return total
#调用sum函数sum( 10, 20 )print "函数外是全局变量 : ", total
以上实例输出结果:
函数内是局部变量 : 30函数外是全局变量 : 0
Q2: python 小白 函数调用 名字错误?
python小白常见错误 关于函数的错误 NameError: name ‘lower’ is not defined。lower为字符串内建函数,使用方法为str.lower(),内建函数为系统已经定义好的
Q3: python中__name__的作用
总结来看,python中 name 具有如下两个作用:
对 name 的详细解释如下:
通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。
Q4: python小白问题,自定义函数NameError: name 'lst' is not defined?
if的缩进错了,应该和for循环在同一层
判断有无重复有更简单的方法,即len(lst) == len(set(lst))
Q5: python.name是什么选择器
基本选择器。
扩展资料:
name选择器_CSS选择器,属性相关
1.1.列举字符串,列表,元组,字典每个常用的五个方法
str:切片,下标,+拼接,in,not in,count计数,endswith以什么结尾,startswith以什么开始,
find检查字符是否在源字符串中,isdigit只包含数字,isalnum数字和字母,upper大写,lower小写,
title首字母大写,isupper是否大写,len多少位,replace替换,strip,rstrip,lstrip删除空格,
list:append,del,delete,insert,+,*,切片,下标,嵌套list[1][0],len,max,min,count,pop,
remove,clear,copy,reverse反转,sort排序,list转化
tuple:add,type,del删除整个元组,len,+,*,in,not in,切片,max,min,tuple转化
dict:dict['key']访问value值修改value值,get,len,str,type,pop
2.描述下列常见内置函数的作用可用代码说明map,zip,filter,sorted,reduce
map:会根据提供的函数对指定序列做映射。
先定义一个pow函数,return x ** 2
In [5]: list(map(lambda x: pow(x,2),list(range(5))))
Out[5]: [0, 1, 4, 9, 16]
sorted:与lambda将list的数按照lambda定义的的key值排序
#一个整数列表,要求按照列表中元素的绝对值大小升序排列
In [18]: list1 = [3,5,-4,-1,0,-2,-6]
...: sorted(list1, key=lambda x: abs(x))
...:
Out[18]: [0, -1, -2, 3, -4, 5, -6]
filter(func,seqs):寻找满足条件的
# list1 = [3,5,-4,-1,0,-2,-6]
In [25]: list(filter(lambda x:x 0,list1))
Out[25]: [3, 5]
reduce(function,seqs)依次对容器内所有元素进行操作,比如相加
#其中reduce函数是python中的一个二元内建函数,它可以通过传给reduce中的函数(必须是二元函数)
#**依次**对数据集中的数据进行操作。例如传给reduce的函数是做加法,数据集是list1,那么reduce
#函数的作用就是将数据集中的数据依次相加
# list1 = [3,5,-4,-1,0,-2,-6]
In [30]: reduce(lambda x,y:x+y,list1)
Out[30]: -5
zip:反转打包解包
list1 = [1,2,3,4]
list2 = ["a","b","c","d"]
zipobj1 = zip(list1,list2)
print(dict(zipobj1)) # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
list3 = [1,2,3,4]
list4 = ["a","b","c","d"]
list5 = ["a2","b2","c2"]
zipobj2 = zip(list3,list4,list5)
print(list(zipobj2)) # [(1, 'a', 'a2'), (2, 'b', 'b2'), (3, 'c', 'c2')]
3.列举你所知道的面相对象中的__开头__结尾的方法及作用,越多越好
__init__,__str__打印对象,__del__,__name__名字,__dict__打印对象的属性k,v形式,
__class__返回一个类的实例,__call__最高级调用,__new__创建新对象
4.写出form标签几个关键性的属性及作用
method属性:规定用于发送 form-data 的 HTTP 方法。实际上就是请求的方式。
name属性:表单的名称。
action属性:指定表单请求的路径
target属性:指定action的Url在哪里打开
enctype: 指定数据的编码格式
5.列举你所知道的css选择器
1.基本选择器:通用,标签,id ‘#’,class ‘.’
2.组合选择器:后代'空格' ,子元素‘’,毗邻 ‘+’,弟弟 ‘~’
3.属性选择器:[username],[username='111'],input[username='111']
4.分组和嵌套选择器:分组‘,’逗号表示并列关系,嵌套‘空格’
5.伪元素选择器:p:first-letter,p:after,p:before
6.伪类选择器:书写顺序:link visited hover/active
点击前,点击后,悬浮/点击时
内容详细
CSS
层叠样式表:就是给HTML标签添加样式的,让它变的更加的好看
# 注释
CSS选择器
基本选择器
组合选择器
属性选择器
分组与嵌套
伪类选择器
伪元素选择器
first
选择器优先级
"""
css属性相关
字体属性
当你想要一些颜色的时候
文字属性
text
背景图片
边框
display属性
display
盒子模型
盒子模型
浮动
浮动的元素
小总结:
# 注释
/**/ 由于前端代码都笔记多并且没有什么规律 所以我们都会利用注释来帮助我们维护代码
# 语法结构
选择器 {
属性1:值;
属性2:值;
属性3:值;
}
# 选择器
1.基本选择器
id选择器
#d1 {}
类选择器
.c1 {}
标签选择器
div {}
通用选择器
* {}
p#d1.c1
emmet插件
2.组合选择器
我们将前端标签的嵌套定义为父亲 儿子 后代 兄弟等等关系
后代选择器
div p {} 只要是div内部的p都拿到
儿子选择器
divp {} 只拿内部第一层级的p
毗邻选择器
div+p {} 紧挨着我的同级下一个
弟弟选择器
div~p {} 同级别下面所有的p
3.属性选择器 []
[username]
[username='jason']
input[username='jason']
ps:标签既可以有默认的书写 id class...
还可以有自定义的书写并且支持多个





