Google.
the official document python.org/3/reference/compound_stmts.html-sharpfunction-definitions" rel=" nofollow noreferrer "> function definition is mentioned in this section
.
by the way, post the blog post found:
Python function comment: strange:-> symbol
decorator
< H2 > about @ property < / H2 >
this is a python object-oriented programming problem, which is relatively simple:
@ property
is a decorator that enables a class to make a method called by a property.
for example, in the python class, I want to access and set private variables in a way similar to CPP, such as
class Student(object):
def get_score(self):
return self._score
def set_score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an integer!')
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value
s = Student()
s.set_score(60) -sharp ok!
s.get_score()
however, this seems a bit troublesome. In fact, python can get and set variables (non-private variables) of a class directly through the following ways:
class Student(object):
pass
s = Student()
s.score = 90
print(s.score) -sharp 90
doesn't this look easy? But there is also a danger that the type of variable assignment to the class is uncertain, and it is impossible to check restrictions on the type of variable assignment, such as integers, strings, boolean variables, and so on. If you want to get a value and assign a value in this way, you can achieve it through @ property
:
.
class Student(object):
@property
def get_score(self):
return self._score
@property
def set_score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an integer!')
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value
s = Student()
s.score = 90
print(s.score) -sharp 90
s.score = '100' -sharp
reference: Liao Xuefeng's python tutorial-using @ property
< H2 > about
-> _ Attrs
< / H2 >
->
often appears after the function name defined by the python function, adding metadata
to the function, describing the return type of the function, which is convenient for developers to use. For example:
def add(x, y) -> int:
return x+y
here, the metadata indicates that the return value of the function is of type int.
as for the code problem, -> _ Attr
indicates that the function returns a private variable of an externally accessible class.
reference: python3-cookbook.readthedocs.io/zh_CN/latest/c07/p03_attach_informatinal_matadata_to_function_arguments.html" rel=" nofollow noreferrer "> add meta information to function parameters
-> third-party database mypy, wants ladders:
http://mypy-lang.org
the variable type used to tell python vm the number of (x) and the returned type, python can be mixed with
dynamic and static typing
the following is part of the official content:
Migrate existing code to static typing, a function at a time. You can freely mix static and dynamic typing within a program, within a module or within an expression. No need to give up dynamic typing-use static typing when it makes sense. Often just adding function signatures gives you statically typed code. Mypy can infer the types of other variables.