$name = $_POST['name'];
$email = $_POST['email'];
$reciver = '/* Reciver Email address */';
if (filter_var($reciver, FILTER_VALIDATE_EMAIL)) {
$subject = $name;
// To send HTML mail, the Content-type header must be set.
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From:' . $email. "\r\n"; // Sender's Email
//$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender
$template = '<div style="padding:50px; color:white;">Hello ,<br/>'
. '<br/><br/>'
. 'Name:' .$name.'<br/>'
. 'Email:' .$email.'<br/>'
. '<br/>'
. '</div>';
$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">" . $template . "</div>";
// Message lines should not exceed 70 characters (PHP rule), so wrap it.
$sendmessage = wordwrap($sendmessage, 70);
// Send mail by PHP Mail Function.
mail($reciver, $subject, $sendmessage, $headers);
echo "Your Query has been received, We will contact you soon.";
} else {
echo "<span>* invalid email *</span>";
}
Если вы строго определяете функцию самостоятельно, и это относительно короткое определение, решение без зависимостей должно определять функцию в строке и присваивать eval () выражения вашей функции.
Например.
funcstring = 'lambda x: x> 5'
func = eval(funcstring)
, а затем необязательно присоединить исходный код к функции:
func.source = funcstring
Модуль проверки имеет методы для извлечения исходного кода из объектов python. По-видимому, он работает только в том случае, если источник находится в файле. Если у вас есть это, я думаю, вам не нужно будет получать источник от объекта.
python 3.5.3
. import inspect
+ inspect.getsource(foo)
работал нормально.
– André C. Andersen
7 May 2017 в 18:52
для подведения итогов:
import inspect
print( "".join(inspect.getsourcelines(foo)[0]))
Хотя я обычно соглашаюсь с тем, что inspect
является хорошим ответом, я бы не согласился с тем, что вы не можете получить исходный код объектов, определенных в интерпретаторе. Если вы используете dill.source.getsource
из dill
, вы можете получить источник функций и лямбда, даже если они определены в интерактивном режиме. Он также может получить код для связанных или не связанных классов методов и функций, определенных в карри ... однако вы не сможете скомпилировать этот код без кода объекта-объекта.
>>> from dill.source import getsource
>>>
>>> def add(x,y):
... return x+y
...
>>> squared = lambda x:x**2
>>>
>>> print getsource(add)
def add(x,y):
return x+y
>>> print getsource(squared)
squared = lambda x:x**2
>>>
>>> class Foo(object):
... def bar(self, x):
... return x*x+x
...
>>> f = Foo()
>>>
>>> print getsource(f.bar)
def bar(self, x):
return x*x+x
>>>
dill.source.getsource
проверяет историю интерпретатора для функций, классов, lambdas и т. д. - он не проверяет содержимое строк, переданных exec.
– Mike McKerns
4 March 2014 в 05:04
dill
для ответа на этот вопрос: stackoverflow.com/questions/13827543/…
– ArtOfWarfare
20 February 2015 в 17:34
dill.source
имеет функции, такие как getname
и importable
и getsource
, которые фокусируются на получении исходного кода (или импортируемого, который дает объект) для любого заданного объекта. Для простых вещей, таких как int
, существует источник no i>, поэтому он не работает должным образом (т. Е. Для «a = 10» он возвращает «10»).
– Mike McKerns
20 February 2015 в 19:08
>>> a = 10; print( [key for key, val in globals().items() if val is a][0] )
– Mike McKerns
20 February 2015 в 19:08
Если вы используете IPython, вам нужно ввести «foo ??»
In [19]: foo??
Signature: foo(arg1, arg2)
Source:
def foo(arg1,arg2):
#do something with args
a = arg1 + arg2
return a
File: ~/Desktop/<ipython-input-18-3174e3126506>
Type: function
dis
является вашим другом, если исходный код недоступен:
>>> import dis
>>> def foo(arg1,arg2):
... #do something with args
... a = arg1 + arg2
... return a
...
>>> dis.dis(foo)
3 0 LOAD_FAST 0 (arg1)
3 LOAD_FAST 1 (arg2)
6 BINARY_ADD
7 STORE_FAST 2 (a)
4 10 LOAD_FAST 2 (a)
13 RETURN_VALUE
Если функция из исходного файла, доступного в файловой системе, может помочь inspect.getsource(foo)
:
Если foo
определяется как:
def foo(arg1,arg2):
#do something with args
a = arg1 + arg2
return a
Затем:
import inspect
lines = inspect.getsource(foo)
print(lines)
Возвраты:
def foo(arg1,arg2):
#do something with args
a = arg1 + arg2
return a
Но я считаю, что если функция скомпилирована из строки, потока или импортирована из скомпилированного файл, то вы не можете получить его исходный код.
len
. Где я могу найти исходный код для функции len
?
– oaklander114
15 September 2016 в 06:06
Вы можете использовать модуль inspect
, чтобы получить полный исходный код для этого. Вы должны использовать метод getsource()
для этого из модуля inspect
. Например:
import inspect
def get_my_code():
x = "abcd"
return x
print(inspect.getsource(get_my_code))
Вы можете проверить дополнительные параметры в приведенной ниже ссылке. получить ваш код python
Чтобы развернуть ответ runeh:
>>> def foo(a):
... x = 2
... return x + a
>>> import inspect
>>> inspect.getsource(foo)
u'def foo(a):\n x = 2\n return x + a\n'
print inspect.getsource(foo)
def foo(a):
x = 2
return x + a
EDIT: Как указано в @ 0sh, этот пример работает с использованием ipython
, но не является простым python
. В обоих случаях должно быть хорошо, при импорте кода из исходных файлов.
getsource(foo)
.
– 0sh
7 February 2015 в 19:14
I считают , что имена переменных не хранятся в файлах pyc / pyd / pyo, поэтому вы не можете получить точные строки кода, если у вас нет исходных файлов.